@article{little,
  author = {John D. C. Little},
  interHash = {01eabd81f8a499beb7523079f9baa8b0},
  intraHash = {238b9df3a78ec9ce65eaa57e3f2d332d},
  journal = {Operations Research},
  number = {3},
  pages = {383--387},
  publisher = {INFORMS},
  title = {{A Proof for the Queuing Formula: L= $\lambda$ W}},
  url = {http://dx.doi.org/10.2307/167570},
  volume = {9},
  year = {1961},
  id = {4544563},
  issn = {0030364X},
  priority = {3},
  at = {2009-05-19 09:46:48},
  doi = {10.2307/167570},
  abstract = {In a queuing process, let 1/? be the mean time between the arrivals of two consecutive units, L be the mean number of units in the system, and W be the mean time spent by a unit in the system. It is shown that, if the three means are finite and the corresponding stochastic processes strictly stationary, and, if the arrival process is metrically transitive with nonzero mean, then L=? W.}
}

@article{citeulike:5096114,
	address = {New York, NY, USA},
	author = {Lin, Herbert},
	citeulike-article-id = {5096114},
	citeulike-linkout-0 = {http://portal.acm.org/citation.cfm?id=4619},
	issn = {0036-8733},
	journal = {Sci. Am.},
	keywords = {design, software-engineering, software-failure},
	number = {6},
	pages = {46--53},
	posted-at = {2009-07-09 15:08:14},
	priority = {1},
	publisher = {Scientific American, Inc.},
	title = {The development of software for ballistic-missile defense},
	url = {http://portal.acm.org/citation.cfm?id=4619},
	volume = {253},
	year = {1985}
}

	

@book{citeulike:4001400,
	abstract = {This standard specifies interchange and arithmetic formats and methods for binary and decimal floating-point arithmetic in computer programming environments. This standard specifies exception conditions and their default handling. An implementation of a floating-point system conforming to this standard may be realized entirely in software, entirely in hardware, or in any combination of software and hardware. For operations specified in the normative part of this standard, numerical results and exceptions are uniquely determined by the values of the input data, sequence of operations, and destination formats, all under user control.},
	author = {{IEEE Std 754-2008}},
	citeulike-article-id = {4001400},
	doi = {10.1109/IEEESTD.2008.4610935},
	publisher = {{Institute of Electrical and Electronics Engineers}},
	keywords = {floating-point, math},
	pages = {1--58},
	posted-at = {2009-06-30 14:55:03},
	priority = {1},
	title = {{IEEE Standard for Floating-Point Arithmetic}},
	url = {http://dx.doi.org/10.1109/IEEESTD.2008.4610935},
	year = {2008}
}

@book{iso_9126_1,
	author = {ISO{~}9126-1:2001 }, 
	citeulike-article-id = {4733091},
	keywords = {iso, quality-attributes, quality-model, software, software-engineering, standard},
	posted-at = {2009-06-03 14:29:39},
	priority = {0},
	publisher = {International Organization for Standardization, Geneva, Switzerland},
	title = {Software engineering -- Product quality -- Part 1: Quality model}
}	

@inproceedings{boehm1976a,
	abstract = {The study reported in this paper establishes a conceptual framework and some key initial results in the analysis of the characteristics of software quality. Its main results and conclusions are: ? Explicit attention to characteristics of software quality can lead to significant savings in software life-cycle costs. ? The current software state-of-the-art imposes specific limitations on our ability to automatically and quantitatively evaluate the quality of software. ? A definitive hierarchy of well-defined, well-differentiated characteristics of software quality is developed. Its higher-level structure reflects the actual uses to which software quality evaluation would be put; its lower-level characteristics are closely correlated with actual software metric evaluations which can be performed. ? A large number of software quality-evaluation metrics have been defined, classified, and evaluated with respect to their potential benefits, quantifiability, and ease of automation. ?Particular software life-cycle activities have been identified which have significant leverage on software quality. Most importantly, we believe that the study reported in this paper provides for the first time a clear, well-defined framework for assessing the often slippery issues associated with software quality, via the consistent and mutually supportive sets of definitions, distinctions, guidelines, and experiences cited. This framework is certainly not complete, but it has been brought to a point sufficient to serve as a viable basis for future refinements and extensions.},
	address = {San Francisco},
	author = {Boehm, B. W.  and Brown, J. R.  and Lipow, M. },
	booktitle = {International Conference on Software Engineering},
	citeulike-article-id = {4935611},
	comment = {Later published as ``Characteristics of Software Quality'', TRW series on technology, North-Holland, 1978},
	keywords = {quality, quality-model, software, software-engineering},
	pages = {592--605},
	posted-at = {2009-06-23 19:16:46},
	priority = {2},
	publisher = {IEEE Computer Society Press},
	title = {{Quantitative Evaluation of Software Quality}},
	url = {http://portal.acm.org/citation.cfm?id=800253.807736},
	year = {1976}
}

@book{mccall1977,
	abstract = {An hierarchical definition of factors affecting software quality was compiled after an extensive literature search. The definition covers the complete range of software development and is broken down into non-oriented and software-oriented characteristics. For the lowest level of the software-oriented factors, metrics were developed that would be independent of the programming language. These measurable criteria were collected and validated using actual Air Force data bases. A handbook was generated that will be useful to Air Force acquisition managers for specifying the overall quality of a software system.},
	author = {{McCall, J. }},
	citeulike-article-id = {4935633},
	keywords = {quality, quality-model, software, software-engineering},
	month = {November},
	number = {ADA049055},
	posted-at = {2009-06-23 19:20:44},
	priority = {2},
	publisher = {General Electric},
	title = {{Factors in Software Quality: Preliminary Handbook on Software Quality for an Acquisiton Manager}},
	url = {http://oai.dtic.mil/oai/oai?verb=getRecord&metadataPrefix=html&identifier=ADA049055},
	volume = {1-3},
	year = {1977}
}

	
	



@book{citeulike:699935,
	abstract = {{Real-Time Systems: Design Principles for Distributed  Embedded Applications focuses on hard real-time systems,  which are computing systems that must meet their temporal  specification in all anticipated load and fault scenarios. The book  stresses the system aspects of distributed real-time applications,  treating the issues of real-time, distribution and fault-tolerance  from an integral point of view. A unique cross-fertilization of ideas  and concepts between the academic and industrial worlds has led to the  inclusion of many insightful examples from industry to explain the  fundamental scientific concepts in a real-world setting. Thus, this  book serves as an excellent text for advanced level courses on  real-time systems.   Real-Time Systems: Design Principles for Distributed Embedded  Applications also serves as an invaluable reference for  professionals in industry. The book explains the relevance of the  latest scientific insights to the solution of everyday problems in the  design and implementation of distributed and embedded real-time  systems. Thus, as a reference source the book presents  state-of-the-art real-time technology in a coherent, concise and  understandable manner. Because the cost-effectiveness of a particular  method is of major concern in an industrial setting, design decisions  are examined from an economic viewpoint. The recent appearance of  cost-effective powerful system chips has tremendous influence on the  architecture and economics of future distributed system solutions. The  composability of an architecture, i.e., the capability to build  dependable large systems out of pre-tested components with minimal  integration effort, is one of the great challenges for designers of  the next generation of real-time systems. The topic of composability  is thus a recurring theme throughout the book.   Real-Time Systems: Design Principles for Distributed Embedded  Applications is essential reading for anyone involved in the  field of real-time systems.}},
	author = {Kopetz, Hermann  },
	citeulike-article-id = {699935},
	comment = {http://books.google.com/books?id=iW-2H8nw-4sC\&pg=PA3\&lpg=PA3\&dq=real-time+systems+functional+requirements\&source=bl\&ots=ejU3RXp-bQ\&sig=xmp8GZaFEz2ZkBiDYH4IWFlbEP8\&hl=en\&ei=qbgvStSDEqKqNbm\_3P0J\&sa=X\&oi=book\_result\&ct=result\&resnum=1\#PPA5,M1},
	howpublished = {Hardcover},
	isbn = {0792398947},
	keywords = {real-time-systems, requirements, software, software-engineering},
	month = {April},
	posted-at = {2009-06-10 15:07:43},
	priority = {1},
	publisher = {Springer},
	title = {{Real-Time Systems: Design Principles for Distributed Embedded Applications (The International Series in Engineering and Computer Science)}},
	url = {http://www.amazon.ca/exec/obidos/redirect?tag=citeulike09-20\&amp;path=ASIN/0792398947},
	year = {1997}
}

	

@inproceedings{citeulike:4797641,
	abstract = {`Hard' real-time systems are those which must meet strictly-defined time deadlines. In the development of software for such systems, the issue of time constraints causes a structured model describing the design of the software to be very different from a structured model describing its functional requirements. Issues such as memory access time, interrupt latency and intertask message passing time are central to real-time software design. A new graphic representation technique for real-time design modelling is presented and an example is given, showing both a software requirements model and a real-time design solution model. Differences in the structure of the models, as well as differences in representation and evaluation criteria, are discussed},
	author = {Kalinsky, D.  and Ready, J. },
	booktitle = {Software Engineering for Real Time Systems, 1989., Second International Conference on},
	citeulike-article-id = {4797641},
	journal = {Software Engineering for Real Time Systems, 1989., Second International Conference on},
	keywords = {real-time-systems, requirements, software, software-engineering},
	pages = {26--30},
	posted-at = {2009-06-10 14:54:05},
	priority = {2},
	title = {{Distinctions Between Requirements Specification and Design of Real-Time Systems}},
	url = {http://ieeexplore.ieee.org/xpls/abs\_all.jsp?arnumber=51714},
	year = {1989}
}

	

@book{citeulike:4792758,
	author = {{Defense Information Systems Agency}},
	citeulike-article-id = {4792758},
	keywords = {architecture, software, software-architecture, software-engineering, standard},
	month = {October},
	organization = {U.S. Department of Defense},
	posted-at = {2009-06-10 03:06:23},
	priority = {1},
	publisher = {U.S. Department of Defense},
	title = {{Department of Defense Joint Technical Architecture, Version 6.0. Volume 2}},
	url = {http://oai.dtic.mil/oai/oai?verb=getRecord\&\#38;metadataPrefix=html\&\#38;identifier=ADA443892},
	year = {2003}
}	

@book{citeulike:481523,
	abstract = {{<i>Open Sources 2.0</i> is a collection of insightful and thought-provoking essays from today's technology leaders that continues painting the evolutionary picture that developed in the 1999 book <i>Open Sources: Voices from the Revolution</i> .    <p>  These essays explore open source's impact on the software industry and reveal how open source concepts are infiltrating other areas of commerce and society. The essays appeal to a broad audience: the software developer will find thoughtful reflections on practices and methodology from leading open source developers like Jeremy Allison and Ben Laurie, while the business executive will find analyses of business strategies from the likes of Sleepycat co-founder and CEO Michael Olson and Open Source Business Conference founder Matt Asay.   </p><p>  From China, Europe, India, and Brazil we get essays that describe the developing world's efforts to join the technology forefront and use open source to take control of its high tech destiny. For anyone with a strong interest in technology trends, these essays are a must-read.   </p><p>  The enduring significance of open source goes well beyond high technology, however. At the heart of the new paradigm is network-enabled distributed collaboration: the growing impact of this model on all forms of online collaboration is fundamentally challenging our modern notion of community.  </p><p>  What does the future hold? Veteran open source commentators Tim O'Reilly and Doc Searls offer their perspectives, as do leading open source scholars Steven Weber and Sonali Shah. Andrew Hessel traces the migration of open source ideas from computer technology to biotechnology, and Wikipedia co-founder Larry Sanger and Slashdot co-founder Jeff Bates provide frontline views of functioning, flourishing online collaborative communities.   </p><p>  The power of collaboration, enabled by the internet and open source software, is changing the world in ways we can only begin to imagine.<i>Open Sources 2.0</i> further develops the evolutionary picture that emerged in the original <i>Open Sources</i> and expounds on the transformative open source philosophy.</p>  <p>"This is a wonderful collection of thoughts and examples by  great minds from the free software movement, and is a must have for  anyone who follows free software development and project histories."</p>  <p>--Robin Monks, Free Software Magazine</p>  <p>  <i>The list of contributors include</i>  <ul>  <li>Alolita Sharma</li>   <li>Andrew Hessel</li>  <li>Ben Laurie</li>  <li>Boon-Lock Yeo</li>  <li>Bruno Souza</li>  <li>Chris DiBona</li>  <li>Danese Cooper</li>  <li>Doc Searls</li>  <li>Eugene Kim</li>  <li>Gregorio Robles</li>  <li>Ian Murdock</li>  <li>Jeff Bates</li>  <li>Jeremy Allison</li>  <li>Jesus M. Gonzalez-Barahona</li>  <li>Kim Polese</li>  <li>Larry Sanger</li>  <li>Louisa Liu</li>  <li>Mark Stone</li>  <li>Mark Stone</li>  <li>Matthew N. Asay</li>  <li>Michael Olson</li>  <li>Mitchell Baker</li>  <li>Pamela Jones</li>  <li>Robert Adkins</li>  <li>Russ Nelson</li>  <li>Sonali K. Shah</li>  <li>Stephen R. Walli</li>  <li>Steven Weber</li>  <li>Sunil Saxena</li>  <li>Tim O'Reilly</li>  <li>Wendy Seltzer</li>  </ul>  </p>}},
	author = {Dibona, Chris   and Stone, Mark   and Cooper, Danese  },
	citeulike-article-id = {481523},
	howpublished = {Paperback},
	isbn = {0596008023},
	keywords = {linux, open-source, software, software-engineering},
	month = {October},
	posted-at = {2009-06-09 20:56:44},
	priority = {2},
	publisher = {{O'Reilly Media, Inc.}},
	title = {{Open Sources 2.0 : The Continuing Evolution}},
	url = {http://www.amazon.ca/exec/obidos/redirect?tag=citeulike09-20\&amp;path=ASIN/0596008023},
	year = {2005}
}

	

@book{citeulike:453494,
	abstract = {{Requirements Engineering Processes and Techniques Why this book was written The value of introducing requirements engineering to trainee software engineers is to equip them for the real world of software and systems development. What is involved in Requirements Engineering? As a discipline, newly emerging from software engineering, there are a range of views on where requirements engineering starts and finishes and what it should encompass. This book offers the most comprehensive coverage of the requirements engineering process to date - from initial requirements elicitation through to requirements validation. How and Which methods and techniques should you use? As there is no one catch-all technique applicable to all types of system, requirements engineers need to know about a range of different techniques. Tried and tested techniques such as data-flow and object-oriented models are covered as well as some promising new ones. They are all based on real systems descriptions to demonstrate the applicability of the approach. Who should read it? Principally written for senior undergraduate and graduate students studying computer science, software engineering or systems engineering, this text will also be helpful for those in industry new to requirements engineering. Accompanying Website: http: //www.comp.lancs.ac.uk/computing/resources/re Visit our Website: http://www.wiley.com/college/wws}},
	author = {Kotonya, Gerald   and Sommerville, Ian  },
	citeulike-article-id = {453494},
	howpublished = {Hardcover},
	isbn = {0471972088},
	keywords = {quality, requirements, software, software-engineering},
	month = {September},
	posted-at = {2009-06-01 13:55:34},
	priority = {2},
	publisher = {John Wiley \& Sons},
	title = {Requirements Engineering: Processes and Techniques (Worldwide Series in Computer Science)},
	url = {http://www.amazon.ca/exec/obidos/redirect?tag=citeulike09-20\&amp;path=ASIN/0471972088},
	year = {1998}
}

	

@book{citeulike:3482581,
	abstract = {* Presenting a wide survey of software development from an architectural
perspective, this book provides a technical view of software architecture

* Surveys software development from an architectural perspective and describes
how to develop products

* Serves as a reference for the techniques, modeling notations, standards, and
methods of software architecture

* Clearly explains architecture's critical role in software engineering},
	author = {Taylor, R. N.  and Medvidovi, Nenad   and Dashofy, Irvine  E. },
	citeulike-article-id = {3482581},
	howpublished = {Hardcover},
	isbn = {0470167742},
	keywords = {book, practice, software-architecture, software-engineering, theory},
	month = {January},
	posted-at = {2009-04-13 17:46:08},
	priority = {5},
	publisher = {John Wiley \& Sons},
	title = {{Software Architecture: Foundations, Theory, and Practice}},
	url = {http://www.amazon.ca/exec/obidos/redirect?tag=citeulike09-20\&amp;path=ASIN/0470167742},
	year = {2009}
}

@book{citeulike:294511,
	author = {Hohpe, Gregor   and Woolf, Bobby  },
	citeulike-article-id = {294511},
	howpublished = {Hardcover},
	isbn = {0321200683},
	keywords = {book, enterprise, patterns, software, software-architecture, software-engineering},
	month = {October},
	posted-at = {2008-11-25 12:04:48},
	priority = {2},
	publisher = {{Addison-Wesley Professional}},
	title = {{Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions}},
	url = {http://www.amazon.ca/exec/obidos/redirect?tag=citeulike09-20\&amp;path=ASIN/0321200683},
	year = {2003}
}

	

@book{citeulike:4472040,
	abstract = {* A practical, nuts-and-bolts guide to architectural solutions that
describes step-by-step how to design robustness and flexibility into an
Internet-based system

  * Based on real-world problems and systems, and illustrated with a running
case study

  * Enables software architects and project managers to ensure that
nonfunctional requirements are met so that the system won't fall over, that it
can be maintained and upgraded without being switched off, and that it can
deal with security, scalability, and performance demands

  * Platform and vendor independence will empower architects to challenge
product-dictated limitations},
	author = {Dyson, Paul   and Longshaw, Andrew  },
	citeulike-article-id = {4472040},
	edition = {1},
	howpublished = {Hardcover},
	isbn = {0470856122},
	keywords = {enterprise, patterns, software, software-architecture, software-engineering},
	month = {May},
	posted-at = {2009-05-06 14:34:10},
	priority = {2},
	publisher = {Wiley},
	title = {{Architecting Enterprise Solutions: Patterns for High-Capability Internet-based Systems}},
	url = {http://www.amazon.ca/exec/obidos/redirect?tag=citeulike09-20\&amp;path=ASIN/0470856122},
	year = {2004}
}


@article{citeulike:4238164,
	abstract = {The architecture of a software-intensive system is largely irrelevant to its end users. Far more important to these stakeholders is the system's behavior, exhibited by raw, naked, running code. Most interesting system tests should be based on the use cases that are identified incrementally over the system's life cycle, the same use cases that the system's architects used to guide their design decisions. Testers can conduct other system tests only after the system's architecture is crisp. Just as analysts use a system's architecture as scaffolding along which to climb and examine the details of every edge, so too can testers use a system's architecture to devise tests that are relevant to the particular texture of that implementation},
	author = {Booch, Grady  },
	booktitle = {Software, IEEE},
	citeulike-article-id = {4238164},
	doi = {10.1109/MS.2007.93},
	journal = {Software, IEEE},
	keywords = {software, software-architecture, software-engineering},
	number = {3},
	pages = {10--11},
	posted-at = {2009-03-30 21:16:09},
	priority = {0},
	title = {{The Irrelevance of Architecture}},
	url = {http://dx.doi.org/10.1109/MS.2007.93},
	volume = {24},
	year = {2007}
}

		

@phdthesis{citeulike:3292273,
	abstract = {The World Wide Web has succeeded in large part because its software architecture has been designed to meet the needs of an Internet-scale distributed hypermedia system. The Web has been iteratively developed over the past ten years through a series of modifications to the standards that define its architecture. In order to identify those aspects of the Web that needed improvement and avoid undesirable modifications, a model for the modern Web architecture was needed to guide its design, definition, and deployment. Software architecture research investigates methods for determining how best to partition a system, how components identify and communicate with each other, how information is communicated, how elements of a system can evolve independently, and how all of the above can be described using formal and informal notations. My work is motivated by the desire to understand and evaluate the architectural design of network-based application software through principled use of architectural constraints, thereby obtaining the functional, performance, and social properties desired of an architecture. An architectural style is a named, coordinated set of architectural constraints. This dissertation defines a framework for understanding software architecture via architectural styles and demonstrates how styles can be used to guide the architectural design of network-based application software. A survey of architectural styles for network-based applications is used to classify styles according to the architectural properties they induce on an architecture for distributed hypermedia. I then introduce the Representational State Transfer (REST) architectural style and describe how REST has been used to guide the design and development of the architecture for the modern Web. REST emphasizes scalability of component interactions, generality of interfaces, independent deployment of components, and intermediary components to reduce interaction latency, enforce security, and encapsulate legacy systems. I describe the software engineering principles guiding REST and the interaction constraints chosen to retain those principles, contrasting them to the constraints of other architectural styles. Finally, I describe the lessons learned from applying REST to the design of the Hypertext Transfer Protocol and Uniform Resource Identifier standards, and from their subsequent deployment in Web client and server software.},
	author = {Fielding, Roy  T. },
	citeulike-article-id = {3292273},
	keywords = {software-architecture, techniques, technology},
	posted-at = {2009-02-20 07:33:33},
	priority = {2},
	school = {University of California, Irvine},
	title = {Architectural Styles and the Design of Network-based Software Architectures},
	url = {http://www.ics.uci.edu/\~{}fielding/pubs/dissertation/fielding\_dissertation.pdf},
	year = {2000}
}

	

@book{citeulike:2732143,
	abstract = {<P>Software has become omnipresent and vital in our information-based society, so all software producers should assume responsibility for its reliability. While "reliable" originally assumed implementations that were effective and mainly error-free, additional issues like adaptability and maintainability have gained equal importance recently. For example, the 2004 ACM/IEEE Software Engineering Curriculum Guidelines list software evolution as one of ten key areas of software engineering education.</P> <P></P> <P>Mens and Demeyer, both international authorities in the field of software evolution, together with the invited contributors, focus on novel trends in software evolution research and its relations with other emerging disciplines such as model-driven software engineering, service-oriented software development, and aspect-oriented software development. They do not restrict themselves to the evolution of source code but also address the evolution of other, equally important software artifacts such as databases and database schemas, design models, software architectures, and process management. The contributing authors provide broad overviews of related work, and they also contribute to a comprehensive glossary, a list of acronyms, and a list of books, journals, websites, standards and conferences that together represent the community’s body of knowledge.</P> <P></P> <P>Combining all these features, this book is the indispensable source for researchers and professionals looking for an introduction and comprehensive overview of the state of the art. In addition, it is an ideal basis for an advanced course on software evolution.</P>},
	citeulike-article-id = {2732143},
	editor = {Mens, T.  and Demeyer, S. },
	howpublished = {Hardcover},
	isbn = {3540764399},
	keywords = {architecture, evolution, software, software-architecture, software-evolution},
	month = {March},
	posted-at = {2008-04-29 08:13:18},
	priority = {2},
	publisher = {Springer},
	title = {Software Evolution},
	url = {http://www.amazon.ca/exec/obidos/redirect?tag=citeulike09-20\&amp;path=ASIN/3540764399},
	year = {2008}
}

@book{citeulike:342786,
	abstract = {{ This best-selling book provides a comprehensive discussion of software engineering techniques and their application in practical software projects.  This book takes a broad-perspective to software engineering, offering readers solid coverage of the software process and software process technology, system integration, requirements management, and risk analysis, as well as pattern-based reuse, distributed system engineering, and legacy systems.  Sommerville has incorporated coverage of new software development paradigms, namely agile methods and component-based software engineering, along with dependibilty issues--availability, security, and critical systems--making the book more in tune with current technology and practice.  This book is designed for readers needing a general introduction to software engineering (development, management, and evolution), especially with regard to system requirements engineering and critical systems.}},
	author = {Sommerville, Ian  },
	citeulike-article-id = {342786},
	howpublished = {Hardcover},
	isbn = {0321210263},
	keywords = {software, software-engineering},
	month = {May},
	posted-at = {2008-10-20 19:19:02},
	priority = {2},
	publisher = {{Addison Wesley}},
	title = {Software Engineering (7th Edition) (International Computer Science Series)},
	url = {http://www.amazon.ca/exec/obidos/redirect?tag=citeulike09-20\&amp;path=ASIN/0321210263},
	year = {2004}
}
	

@incollection{citeulike:3124943,
	author = {Belady, L. },
	booktitle = {Software Design: Methods and Techniques (L.J. Peters, author)},
	citeulike-article-id = {3124943},
	keywords = {design, software, software-design, software-engineering},
	posted-at = {2008-08-14 21:29:13},
	priority = {2},
	publisher = {Yourdon Press},
	title = {Foreword},
	year = {1981}
}

@book{citeulike:3123741,
	abstract = {Pressman's Software Engineering: A Practitioner's Approach is celebrating 20
years of excellence in the software engineering field. This comprehensive 5th
edition provides excellent explanations of all the important topics in
software engineering and enhances them with diagrams, examples, exercises, and
references.

In the fifth edition, a new design has been added to make the book more user
friendly. Several chapters have been added including chapters on Web
Engineering and User Interface Design.},
	author = {Pressman, Roger  S. },
	citeulike-article-id = {3123741},
	edition = {5th},
	howpublished = {Paperback},
	isbn = {0077096770},
	keywords = {software, software-engineering},
	month = {April},
	posted-at = {2008-08-14 15:01:32},
	priority = {4},
	publisher = {McGraw Hill Higher Education},
	title = {Software Engineering},
	url = {http://www.amazon.ca/exec/obidos/redirect?tag=citeulike09-20\&amp;path=ASIN/0077096770},
	year = {2000}
}

	

@misc{citeulike:2884069,
	author = {Germoglio, Guilherme  },
	citeulike-article-id = {2884069},
	howpublished = {Proposta de Dissertaç\~{a}o de Mestrado. Universidade Federal de Campina Grande. Online at: http://germoglio.googlepages.com/proposta-ensino-as.pdf},
	keywords = {architecture, education, proposal, software-architecture, software-engineering},
	month = {December},
	posted-at = {2008-06-12 02:27:11},
	priority = {0},
	school = {Universidade Federal de Campina Grande},
	title = {Apoio para o Ensino de Projeto de Arquitetura de Software},
	year = {2007}
}

@misc{citeulike:2869259,
	author = {Malan, Ruth   and Bredemeyer, Dana  },
	citeulike-article-id = {2869259},
	howpublished = {Online at: http://www.bredemeyer.com/pdf\_files/NonFunctReq.PDF},
	keywords = {architecture, requirements, software-architecture},
	month = {August},
	posted-at = {2008-06-06 12:42:41},
	priority = {4},
	title = {Defining Non-Functional Requirements},
	year = {2001}
}

@book{citeulike:2865301,
	author = {Poppendieck, Mary   and Poppendieck, Tom  },
	citeulike-article-id = {2865301},
	howpublished = {Paperback},
	isbn = {0321150783},
	keywords = {agile, software, software-engineering},
	month = {May},
	posted-at = {2008-06-05 13:24:40},
	priority = {2},
	publisher = {Addison-Wesley Professional},
	title = {Lean Software Development: An Agile Toolkit (The Agile Software Development Series)},
	url = {http://www.amazon.ca/exec/obidos/redirect?tag=citeulike09-20\&amp;path=ASIN/0321150783},
	year = {2003}
}

@book{citeulike:1562081,
	abstract = {{<P>The field of software architecture continues to grow in acceptance and</P><P>importance. However, this burgeoning discipline has thus far lacked an</P><P>authoritative treatment that helps its practitioners gain valuable perspective and</P><P>a thorough understanding of the disparate viewpoints that project stakeholders</P><P>bring to the project. In this new book written by two practicing software</P><P>architects, the field of software architecture now has an invaluable resource for</P><P>designing and implementing successful software architectures.</P><P>Colleagues, business management, and ultimately customers appreciate the</P><P>benefit of solid software systems architecture, and this new book helps the</P><P>architect deliver it. This software architecture handbook will be referred to time</P><P>and again. It is a single source of proven practices and valuable advice that will</P><P>help the software architect shepherd a project through its entire lifecycle.</P>}},
	author = {Rozanski, Nick   and Woods, E\'{o}in  },
	citeulike-article-id = {1562081},
	howpublished = {Hardcover},
	isbn = {0321112296},
	keywords = {architect, documentation, software-architecture, software-engineering, view, viewpoint},
	month = {April},
	posted-at = {2008-06-04 15:15:14},
	priority = {2},
	publisher = {{Addison-Wesley Professional}},
	title = {Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives},
	url = {http://www.amazon.ca/exec/obidos/redirect?tag=citeulike09-20\&amp;path=ASIN/0321112296},
	year = {2005}
}



@inproceedings{citeulike:2717396,
	address = {New York, NY, USA},
	author = {Demillo, Richard  A.  and Lipton, Richard  J.  and Perlis, Alan  J. },
	booktitle = {POPL '77: Proceedings of the 4th ACM SIGACT-SIGPLAN symposium on Principles of programming languages},
	citeulike-article-id = {2717396},
	doi = {10.1145/512950.512970},
	keywords = {formal-methods, proofs, software},
	pages = {206--214},
	posted-at = {2008-04-25 12:09:31},
	priority = {2},
	publisher = {ACM},
	title = {Social processes and proofs of theorems and programs},
	url = {http://portal.acm.org/citation.cfm?id=512970},
	year = {1977}
}



@article{citeulike:2713100,
	abstract = {A designer's expertise rests on the knowledge and skills which develop with experience in a domain. As a result, when a designer is designing an object in an unfamiliar domain he will not have the same knowledge and skills available to him as when he is designing an object in a familiar domain. In this paper we look at the software designer's underlying constellation of knowledge and skills, and at the way in which this constellation is dependent upon experience in a domain. What skills drop out, what skills, or interactions of skills come forward as experience with the domain changes? To answer the above question, we studied expert designers in experimentally created design contexts with which they were differentially familiar. In this paper we describe the knowledge and skills we found were central to each of the above contexts and discuss the functional utility of each. In addition to discussing the knowledge and skills we observed in expert designers, we will also compare novice and expert behavior.},
	author = {Adelson, B.  and Soloway, E. },
	booktitle = {Software Engineering, IEEE Transactions on},
	citeulike-article-id = {2713100},
	journal = {Software Engineering, IEEE Transactions on},
	keywords = {design, domain-knowledge, software},
	number = {11},
	pages = {1351--1360},
	posted-at = {2008-04-24 20:13:11},
	priority = {4},
	title = {The Role of Domain Experience in Software Design},
	url = {http://ieeexplore.ieee.org/xpls/abs\_all.jsp?arnumber=1701951},
	volume = {SE-11},
	year = {1985}
}



@article{arbab2002saa,
	author = {Arbab, F.  and Bonsangue, M.  and Scholten, J. G.  and Iacob, M. E.  and Jonkers, H.  and Lankhorst, M.  and Proper, E.  and Stam, A. },
	citeulike-article-id = {2702739},
	journal = {Telematica Institut Version},
	keywords = {architecture, software-architecture},
	posted-at = {2008-04-22 19:55:24},
	priority = {2},
	title = {{State of the Art in Architecture Frameworks and Tools}},
	volume = {1},
	year = {2002}
}



@article{citeulike:2702733,
	author = {Arries, Donald   and Dandashi, Fatma   and Dello and Garvey, Paul  R.  and Hagan, Paula  J.  and Mularz, Diane   and Reedy, Ann   and Woodward, Beverly  S.  and Yokley, Charles  A. },
	citeulike-article-id = {2702733},
	editor = {Hagan, Paula  J. },
	howpublished = {http://www.mitre.org/work/tech\_papers/tech\_papers\_04/04\_0104/04\_0104.pdf},
	keywords = {architecture, body-of-knowledge, enterprise},
	month = {February},
	posted-at = {2008-04-22 19:52:06},
	priority = {2},
	title = {Guide to the (Evolving) Enterprise Architecture Body of Knowledge},
	year = {2004}
}



@book{citeulike:2675982,
	abstract = {{This is the braille version of the timeless reference book. According to the St. Louis Dispatch, this "excellent book, which should go off to college with every freshman, is recognized as the best book of its kind we have." It should be the ". . . daily companion of anyone who writes for a living and, for that matter, anyone who writes at all" (Greensboro Daily New). "No book in shorter space, with fewer words, will help any writer more than this persistent little volume" (The Boston Globe). Two volumes in braille.} {Composition teachers throughout the English-speaking world have been pushing this book on their students since it was first published in 1957.  Co-author White later revised it, and it remains the most compact and lucid handbook we have for matters of basic principles of composition, grammar, word usage and misusage, and writing style.}},
	author = {Strunk, William   and White, E. B.  and Angell, Roger  },
	citeulike-article-id = {2675982},
	howpublished = {Hardcover},
	isbn = {0205313426},
	keywords = {book, english, writing},
	month = {August},
	posted-at = {2008-04-16 04:34:01},
	priority = {0},
	publisher = {{Allyn \& Bacon}},
	title = {The Elements of Style},
	url = {http://www.amazon.ca/exec/obidos/redirect?tag=citeulike09-20\&amp;path=ASIN/0205313426},
	year = {1999}
}



@book{citeulike:2675980,
	abstract = {{<div>Time magazine called Mortimer J. Adler a "philosopher for everyman." In this guide to considering the big questions, Adler addresses the topics all men and women ponder in the course of life, such as "What is love?", "How do we decide the right thing to do?", and, "What does it mean to be good?" Drawing on his extensive knowledge of Western literature, history, and philosophy, the author considers what is meant by democracy, law, emotion, language, truth, and other abstract concepts in light of more than two millennia of Western civilization and discourse. Adler's essays offer a remarkable and contemplative distillation of the Great Ideas of Western Thought.<br></div>}},
	author = {Adler, Mortimer  J. },
	citeulike-article-id = {2675980},
	howpublished = {Paperback},
	isbn = {0812694120},
	keywords = {book, ideas, philosophy},
	month = {March},
	posted-at = {2008-04-16 04:32:18},
	priority = {0},
	publisher = {{Open Court}},
	title = {How to Think About the Great Ideas: From the Great Books of Western Civilization},
	url = {http://www.amazon.ca/exec/obidos/redirect?tag=citeulike09-20\&amp;path=ASIN/0812694120},
	year = {2000}
}



@misc{citeulike:2675954,
	author = {Lockhart, Paul  },
	citeulike-article-id = {2675954},
	keywords = {education, math},
	posted-at = {2008-04-16 04:17:10},
	priority = {2},
	title = {A Mathematician's Lament},
	year = {2002}
}



@article{citeulike:2458579,
	address = {New York, NY, USA},
	author = {Raskin, Jef  },
	citeulike-article-id = {2458579},
	doi = {10.1145/1053331.1053354},
	issn = {1542-7730},
	journal = {Queue},
	keywords = {code, communication, documentation, implementation},
	month = {March},
	number = {2},
	pages = {64--ff},
	posted-at = {2008-03-02 21:53:25},
	priority = {4},
	publisher = {ACM},
	title = {Comments are more important than code},
	url = {http://portal.acm.org/citation.cfm?id=1053331.1053354},
	volume = {3},
	year = {2005}
}



@book{citeulike:1730948,
	abstract = {{<P style="MARGIN: 0px">Great code doesn't just function: It clearly and consistently communicates your intentions, allowing other programmers to understand your code, rely on it, and modify it with confidence. But great code doesn't just happen. It is the outcome of hundreds of small but critical decisions programmers make every single day. Now, legendary software innovator Kent Beck--known worldwide for creating Extreme Programming and pioneering software patterns and test-driven development--focuses on these critical decisions, unearthing powerful “implementation patterns” for writing programs that are simpler, clearer, better organized, and more cost-effective. </P>  <P style="MARGIN: 0px"> </P>  <P style="MARGIN: 0px">Beck identifies 77 new patterns for handling everyday programming tasks and writing more readable code. These new patterns address many areas of development, including class, state, behavior, method, collections, frameworks, and more. You\&rsquo;ll find better solutions for handling everything from naming variables to checking exceptions. He uses diagrams, stories, examples, and essays to present each pattern in the most illuminating way possible. </P>  <P style="MARGIN: 0px"> </P>  <P style="MARGIN: 0px">The book covers</P>  <UL>  <LI>  <DIV style="MARGIN: 0px">The value of communicating through code, and the philosophy behind patterns</DIV>  <LI>  <DIV style="MARGIN: 0px">How and when to create classes, and how classes encode logic</DIV>  <LI>  <DIV style="MARGIN: 0px">Best practices for storing and retrieving state</DIV>  <LI>  <DIV style="MARGIN: 0px">Behavior: Patterns for representing logic, including alternative paths</DIV>  <LI>  <DIV style="MARGIN: 0px">Writing, naming, and decomposing methods</DIV>  <LI>  <DIV style="MARGIN: 0px">Choosing and using collections</DIV>  <LI>  <DIV style="MARGIN: 0px">Implementation pattern variations for use in building frameworks</DIV></LI></UL>  <P style="MARGIN: 0px"><B><I>Implementation Patterns</I></B> will help programmers at all experience levels, especially those who have benefited from software patterns or agile methods. It will also be an indispensable resource for development teams seeking to work together more efficiently and build more maintainable software. No other software engineering book will touch your day-to-day work more often, and no other book will prove more useful.</P>}},
	author = {Beck, Kent  },
	citeulike-article-id = {1730948},
	howpublished = {Paperback},
	isbn = {0321413091},
	keywords = {communication, decisions, design, implementation, patterns},
	month = {October},
	posted-at = {2008-03-02 21:40:00},
	priority = {4},
	publisher = {{Addison-Wesley Professional}},
	title = {Implementation Patterns},
	url = {http://www.amazon.ca/exec/obidos/redirect?tag=citeulike09-20\&amp;path=ASIN/0321413091},
	year = {2007}
}



@article{citeulike:2458469,
	abstract = {Code clutter and unnecessary complexity can obscure design. How can designers better present their design decisions in their code?},
	author = {Wirfs-Brock, Rebecca  J. },
	booktitle = {Software, IEEE},
	citeulike-article-id = {2458469},
	doi = {10.1109/MS.2008.33},
	journal = {Software, IEEE},
	keywords = {code, design, development, documentation, software-engineering, traceability},
	number = {2},
	pages = {20--21},
	posted-at = {2008-03-02 21:30:13},
	priority = {0},
	title = {Connecting Design with Code},
	url = {http://dx.doi.org/10.1109/MS.2008.33},
	volume = {25},
	year = {2008}
}



@article{citeulike:2458333,
	abstract = {CS departments must fight shrinking enrollments by making their offerings more attractive.},
	author = {Mahmoud, Q. H. },
	booktitle = {Computer},
	citeulike-article-id = {2458333},
	doi = {10.1109/MC.2005.170},
	journal = {Computer},
	keywords = {computer-science, education},
	number = {5},
	pages = {100--99},
	posted-at = {2008-03-02 20:28:15},
	priority = {4},
	title = {Revitalizing Computing Science Education},
	url = {http://dx.doi.org/10.1109/MC.2005.170},
	volume = {38},
	year = {2005}
}



@article{citeulike:2458328,
	author = {Hilburn, T. B.  and Humphrey, W. S. },
	booktitle = {Software, IEEE},
	citeulike-article-id = {2458328},
	doi = {10.1109/MS.2002.1032848},
	journal = {Software, IEEE},
	keywords = {education, software},
	number = {5},
	pages = {22--24},
	posted-at = {2008-03-02 20:26:27},
	priority = {4},
	title = {The impending changes in software education},
	url = {http://dx.doi.org/10.1109/MS.2002.1032848},
	volume = {19},
	year = {2002}
}



@article{citeulike:2458324,
	author = {Anthes, G. },
	citeulike-article-id = {2458324},
	journal = {ComputerWorld},
	keywords = {computer-science},
	month = {May},
	number = {1},
	posted-at = {2008-03-02 20:24:40},
	priority = {4},
	title = {Computer Science Looks for a Remake},
	url = {http://www.computerworld.com/careertopics/careers/story/0,10801,110959,00.html.},
	year = {2006}
}



@inproceedings{citeulike:1840134,
	address = {Washington, DC, USA},
	author = {Kramer, Jeff   and Magee, Jeff  },
	booktitle = {FOSE '07: 2007 Future of Software Engineering},
	citeulike-article-id = {1840134},
	doi = {10.1109/FOSE.2007.19},
	isbn = {0769528295},
	keywords = {architecture, self-managed-systems, software, software-architecture},
	pages = {259--268},
	posted-at = {2008-03-02 20:11:46},
	priority = {4},
	publisher = {IEEE Computer Society},
	title = {Self-Managed Systems: an Architectural Challenge},
	url = {http://portal.acm.org/citation.cfm?id=1254723},
	year = {2007}
}



@inproceedings{citeulike:2189904,
	address = {Washington, DC, USA},
	author = {Taylor, Richard  N.  and van der Hoek, Andre  },
	booktitle = {FOSE '07: 2007 Future of Software Engineering},
	citeulike-article-id = {2189904},
	doi = {10.1109/FOSE.2007.21},
	isbn = {0769528295},
	keywords = {architect, design, software, software-architecture},
	pages = {226--243},
	posted-at = {2008-03-02 20:10:48},
	priority = {4},
	publisher = {IEEE Computer Society},
	title = {{Software Design and Architecture -- The Once and Future Focus of Software Engineering}},
	url = {http://portal.acm.org/citation.cfm?id=1254721},
	year = {2007}
}



@inproceedings{citeulike:2458286,
	abstract = {We argue that the software engineering (SE) community could have a significant impact on the future of the discipline by focusing its efforts on improving the education of software engineers. There are some bright spots such as the various projects to codify knowledge, and the development of undergraduate SE programs. However, there remain several key challenges, each of which is addressed in this paper: The challenges are 1) making programs attractive to students, 2) focusing education appropriately, 3) communicating industrial reality more effectively, 4) defining curricula that are forward-looking, 5) providing education for existing practitioners, 6) making SE education more evidencebased, 7) ensuring that SE educators have the necessary background, and 8) raising the prestige and quality of SE educational research. For each challenge, we provide action items and open research questions.},
	author = {Lethbridge, Timothy  C.  and Diaz-Herrera, Jorge   and Leblanc, Richard  J.  and Thompson, Barrie  J. },
	booktitle = {Future of Software Engineering, 2007. FOSE '07},
	citeulike-article-id = {2458286},
	doi = {10.1109/FOSE.2007.13},
	journal = {Future of Software Engineering, 2007. FOSE '07},
	keywords = {education, practice, software},
	pages = {12--28},
	posted-at = {2008-03-02 20:09:30},
	priority = {4},
	title = {Improving software practice through education: Challenges and future trends},
	url = {http://dx.doi.org/10.1109/FOSE.2007.13},
	year = {2007}
}



@inproceedings{citeulike:2190207,
	address = {Washington, DC, USA},
	author = {Osterweil, Leon  J. },
	booktitle = {FOSE '07: 2007 Future of Software Engineering},
	citeulike-article-id = {2190207},
	doi = {10.1109/FOSE.2007.1},
	isbn = {0769528295},
	keywords = {software-engineering},
	pages = {1--11},
	posted-at = {2008-03-02 20:09:12},
	priority = {4},
	publisher = {IEEE Computer Society},
	title = {A Future for Software Engineering?},
	url = {http://portal.acm.org/citation.cfm?id=1253532.1254706},
	year = {2007}
}



@article{citeulike:2458197,
	author = {Kornecki, Andrew  J. },
	citeulike-article-id = {2458197},
	journal = {IEEE Distributed Systems Online},
	keywords = {computer-science, education},
	number = {2},
	posted-at = {2008-03-02 19:27:59},
	priority = {0},
	title = {Computing Curricula for the 21st Century},
	url = {http://dsonline.computer.org/portal/site/dsonline/menuitem.9ed3d9924aeb0dcd82ccc6716bbe36ec/index.jsp?\&\#38;pName=dso\_level1\&\#38;path=dsonline/2008/02\&\#38;file=o2002edu.xml\&\#38;xsl=article.xsl\&\#38;;jsessionid=HK2tXG5RhdXsrL41nfYxYHWPgTwSTGDyTQJ5pH71GSRg1Wp6KsTy!-1932870963},
	volume = {9},
	year = {2008}
}



@article{citeulike:2216350,
	abstract = {Existing coding guidelines therefore offer limited benefit, even for critical applications. A verifiable set of well-chosen coding rules could, however, assist in analyzing critical software components for properties that go well beyond compliance with the set of rules itself. To be effective, though, the set of rules must be small, and it must be clear enough that users can easily understand and remember it. In addition, the rules must be specific enough that users can check them thoroughly and mechanically. To put an upper bound on the number of rules, the set is restricted to no more than 10 rules that will provide an effective guideline. Although such a small set of rules cannot be all-encompassing, following it can achieve measurable effects on software reliability and verifiability.},
	author = {Holzmann, G. J. },
	booktitle = {Computer},
	citeulike-article-id = {2216350},
	doi = {10.1109/MC.2006.212},
	journal = {Computer},
	keywords = {code, development},
	number = {6},
	pages = {95--99},
	posted-at = {2008-01-10 22:12:08},
	priority = {4},
	title = {The power of 10: rules for developing safety-critical code},
	url = {http://dx.doi.org/10.1109/MC.2006.212},
	volume = {39},
	year = {2006}
}



@article{citeulike:2099896,
	abstract = {The term software maintenance is often used simply to refer to fixing bugs in released code. However, the most maintenance is actually about enhancing functionality. Software that is unsuccessful will not require maintenance. Maintenance is associated with success, and is inevitable for successful software. It often represents a substantial revenue stream for the vendor organisation. It was this sort of thinking that encouraged a group of software engineering academics at Durham to set up the Centre for Software Maintenance in March 1987. By 1999, two significant factors were influencing the work of the Centre. Firstly its success was bringing expansion. This inevitably meant that the scope of our interests was broadening. Moreover, our focus began to change to address problems such as how to construct new software that is very easy to enhance. Evolution now expressed much more clearly where the heart of the research area lay. As a result, we decided to rename our Centre the Research Institute in Software Evolution (RISE). The activities of RISE are extensive, and to summarise our research, we have chosen four projects: program comprehension; understanding through visualising; software architectures for dependable distributed computing; and collaboration with industry},
	author = {Bennett, K. H.  and Knight, C.  and Munro, M.  and Xu, J. },
	booktitle = {Computing \& Control Engineering Journal},
	citeulike-article-id = {2099896},
	journal = {Computing \& Control Engineering Journal},
	keywords = {software, software-engineering, software-evolution},
	number = {4},
	pages = {179--186},
	posted-at = {2007-12-12 18:14:24},
	priority = {4},
	title = {Centres of excellence: Research Institute in Software Evolution, University of Durham},
	url = {http://ieeexplore.ieee.org/xpls/abs\_all.jsp?arnumber=866912},
	volume = {11},
	year = {2000}
}



@inproceedings{citeulike:2099879,
	abstract = {In the fall of 1996, the Rochester Institute of Technology (USA) began admitting students to the nations first baccalaureate program in software engineering. One of the curriculum's primacy themes is software design, ranging from the very concrete (e.g., code, data structures and algorithms) to the more abstract (e.g., subsystems, architectural designs). At each of these levels the authors are able to address the variety of software quality issues that arise at different points in the software development process. This paper describes the structure of their introductory course in software architectures and their experience teaching it. They also speculate on how the course could evolve over time},
	author = {Naveda, J. F. },
	booktitle = {Frontiers in Education Conference, 1999. FIE '99. 29th Annual},
	citeulike-article-id = {2099879},
	journal = {Frontiers in Education Conference, 1999. FIE '99. 29th Annual},
	keywords = {architecture, design, education, software, software-architecture, software-engineering},
	pages = {12B1/1--12B1/4 vol.2},
	posted-at = {2007-12-12 18:12:17},
	priority = {5},
	title = {Teaching architectural design in an undergraduate software engineering curriculum},
	url = {http://ieeexplore.ieee.org/xpls/abs\_all.jsp?arnumber=841562},
	volume = {2},
	year = {1999}
}



@inproceedings{citeulike:2099872,
	abstract = {SWEBOK describes what knowledge a software engineer who has a Bachelor's degree and four years of experience should have. SEEK describes the knowledge to be taught in an undergraduate program in software engineering. Although different in scope and purpose, there are many similarities between the two, and after all, even experienced developers need an education, don't they? A full-day workshop on the alignment between SWEBOK and SEEK, held at STEP 2002, revealed a number of issues that received either a scant or a scattered treatment in either or both documents. These issues include: software architecture, software measurement, and software quality. In addition, topics of debate were whether or not user interface design should be considered part of software design, or rather deserves its own, separate treatment; and whether maintenance/evolution merits a separate discussion, or should rather be seen as the default mode of operation in software development. This paper elaborates the discussions of this workshop.},
	author = {Bagert, D. J.  and Barbacci, M.  and Budgen, D.  and Lethbridge, T. C.  and Suryn, W.  and van Vliet, H. },
	booktitle = {Software Technology and Engineering Practice, 2002. STEP 2002. Proceedings. 10th International Workshop on},
	citeulike-article-id = {2099872},
	journal = {Software Technology and Engineering Practice, 2002. STEP 2002. Proceedings. 10th International Workshop on},
	keywords = {education, software-engineering},
	pages = {24--35},
	posted-at = {2007-12-12 18:10:00},
	priority = {5},
	title = {Thoughts on software engineering knowledge, and how to organize it},
	url = {http://ieeexplore.ieee.org/xpls/abs\_all.jsp?arnumber=1267596},
	year = {2002}
}

@book{citeulike:822406,
	abstract = {{Software Design provides a balanced view of the many and varied software  design methodologies most widely used by practitioners. By being aware of  the strengths and limitations of each method, a student is better able to  judge which to adopt when working in the field. The book is also valuable  for software engineers and project managers who need an objective guide to the state of the art in this area. The text provides a general overview of software design within the context of software development and also of  more general thinking about design issues. It examines the nature of  design activities, as well as their applications within software  development.  }},
	author = {Budgen, David  },
	citeulike-article-id = {822406},
	howpublished = {Hardcover},
	isbn = {0201722194},
	keywords = {design, software, software-design, software-engineering},
	month = {May},
	posted-at = {2008-08-13 14:47:30},
	priority = {2},
	publisher = {{Addison Wesley}},
	title = {Software Design (2nd Edition)},
	url = {http://www.amazon.ca/exec/obidos/redirect?tag=citeulike09-20\&amp;path=ASIN/0201722194},
	year = {2003}
}

	


@inproceedings{citeulike:2099853,
	abstract = {The systems designed and build today are very involved, yet engineers seek ways of building systems that are even more complex. The key to success in this effort is mature systems architectures to guide engineers in the process of integrating components and evolving them into larger systems. The academic research and study in this area is expanding, although the amount of educational material and textbooks in the field of system architecting is minimal. The contribution of this paper is in outlining an advanced student text for system and enterprise architecting. In addition to providing an overview of major architecting topics to be included in the text, the work also adds the needed context. The author plans to elaborate upon this effort to create a volume that is to serve not only as a pedagogical aid, but also as a handy reference of any systems architect.},
	author = {Bubak, O. },
	booktitle = {System of Systems Engineering, 2006 IEEE/SMC International Conference on},
	citeulike-article-id = {2099853},
	journal = {System of Systems Engineering, 2006 IEEE/SMC International Conference on},
	keywords = {education, enterprise, software-architecture, systems},
	pages = {6 pp.+},
	posted-at = {2007-12-12 18:04:26},
	priority = {0},
	title = {Composing a course book for system and enterprise architecture education},
	url = {http://ieeexplore.ieee.org/xpls/abs\_all.jsp?arnumber=1652301},
	year = {2006}
}



@article{citeulike:2099851,
	abstract = {Intertwining reflective and abstract modes of thinking into the education of software engineers, especially in a course that focuses on software engineering's human aspects, can increase students' awareness of the discipline's richness and complexity while enhancing their professional performance in the field. The complexity of software development environments includes the profession's cognitive and social aspects. A course designed to increase students' awareness of these complexities introduces them to reflective mental processes and to tasks that invite them to apply abstract thinking. For the past three years, we have taught a Human Aspects of Software Engineering course at both the Technion-Israel Institute of Technology and the School of Computer Science at Carnegie Mellon University. This course aims to increase software engineering students' awareness of the richness and complexity of various human aspects of software engineering and of the problems, dilemmas, question, and conflicts these professionals could encounter during the software development process.},
	author = {Hazzan, O.  and Tomayko, J. E. },
	booktitle = {Computer},
	citeulike-article-id = {2099851},
	journal = {Computer},
	keywords = {education, software-engineering},
	number = {6},
	pages = {39--45},
	posted-at = {2007-12-12 18:02:41},
	priority = {5},
	title = {Reflection and abstraction in learning software engineering's human aspects},
	url = {http://ieeexplore.ieee.org/xpls/abs\_all.jsp?arnumber=1439450},
	volume = {38},
	year = {2005}
}



@inproceedings{citeulike:2099770,
	abstract = {In today's software industry a software engineer is not only expected to successfully cope with technical challenges, but also to deal with non-technical issues arising from difficult project situations. These issues typically include understanding the customer's domain and requirements, working in a team, organizing the division of work, and coping with time pressure and hard deadlines. Thus, in our opinion teaching Software Engineering, (SE) not only requires studying theory using text books, but also providing students with the experience of typical non-technical issues in a software project. This article reports experiences with the concept of a course focusing on providing practical know-how.},
	author = {Gnatz, M.  and Kof, L.  and Prilmeier, F.  and Seifert, T. },
	booktitle = {Software Engineering Education and Training, 2003. (CSEE\&T 2003). Proceedings. 16th Conference on},
	citeulike-article-id = {2099770},
	journal = {Software Engineering Education and Training, 2003. (CSEE\&T 2003). Proceedings. 16th Conference on},
	keywords = {education, practice, software, software-engineering},
	pages = {120--128},
	posted-at = {2007-12-12 17:51:31},
	priority = {4},
	title = {A practical approach of teaching Software Engineering},
	url = {http://ieeexplore.ieee.org/xpls/abs\_all.jsp?arnumber=1191369},
	year = {2003}
}



@article{citeulike:2098735,
	abstract = {Most software engineering courses require students to develop small programs from scratch, but professional engineers typically work on the evolution of large software systems. Using open source software and a software change process model can narrow this gap without imposing excessive demands on students or instructors.},
	author = {Petrenko, Maksym   and Poshyvanyk, Denys   and Rajlich, V\'{a}clav   and Buchta, Joseph  },
	booktitle = {Computer},
	citeulike-article-id = {2098735},
	journal = {Computer},
	keywords = {education, open-source, software, software-engineering, software-evolution},
	number = {11},
	pages = {25--31},
	posted-at = {2007-12-12 12:58:05},
	priority = {0},
	title = {Teaching Software Evolution in Open Source},
	url = {http://ieeexplore.ieee.org/xpls/abs\_all.jsp?arnumber=4385252},
	volume = {40},
	year = {2007}
}



@book{citeulike:115151,
	author = {Fowler, Martin  },
	citeulike-article-id = {115151},
	howpublished = {Hardcover},
	isbn = {0321127420},
	keywords = {architecture, enterprise, patterns, software, software-architecture, software-engineering},
	month = {November},
	posted-at = {2007-12-10 19:56:59},
	priority = {2},
	publisher = {{Addison-Wesley Professional}},
	title = {{Patterns of Enterprise Application Architecture}},
	url = {http://www.amazon.ca/exec/obidos/redirect?tag=citeulike09-20\&amp;path=ASIN/0321127420},
	year = {2002}
}



@book{citeulike:2086627,
	abstract = {{Software engineering and computer science students need a resource that explains how to apply design patterns at the enterprise level, allowing them to design and implement systems of high stability and quality.  Software Architecture Design Patterns in Java is a detailed explanation of how to apply design patterns and develop software architectures. It provides in-depth examples in Java, and guides students by detailing when, why, and how to use specific patterns.  This textbook presents 42 design patterns, including 23 GoF patterns. Categories include: Basic, Creational, Collectional, Structural, Behavioral, and Concurrency, with multiple examples for each. The discussion of each pattern includes an example implemented in Java. The source code for all examples is found on a companion Web site.  The author explains the content so that it is easy to understand, and each pattern discussion includes Practice Questions to aid instructors. The textbook concludes with a case study that pulls several patterns together to demonstrate how patterns are not applied in isolation, but collaborate within domains to solve complicated problems.}},
	author = {Kuchana, Partha  },
	citeulike-article-id = {2086627},
	howpublished = {Hardcover},
	isbn = {0849321425},
	keywords = {architecture, design-patterns, java, patterns, software-architecture},
	month = {April},
	posted-at = {2007-12-10 19:54:24},
	priority = {2},
	publisher = {AUERBACH},
	title = {Software Architecture Design Patterns in Java},
	url = {http://www.amazon.ca/exec/obidos/redirect?tag=citeulike09-20\&amp;path=ASIN/0849321425},
	year = {2004}
}



@book{citeulike:174301,
	author = {Bass, Len   and Clements, Paul   and Kazman, Rick  },
	citeulike-article-id = {174301},
	howpublished = {Hardcover},
	isbn = {0321154959},
	keywords = {architecture, book, software, software-architecture, software-engineering},
	month = {April},
	posted-at = {2007-12-05 20:32:32},
	priority = {4},
	publisher = {{Addison-Wesley Professional}},
	title = {Software Architecture in Practice, Second Edition},
	url = {http://www.amazon.ca/exec/obidos/redirect?tag=citeulike09-20\&amp;path=ASIN/0321154959},
	year = {2003}
}



@inproceedings{citeulike:2061126,
	address = {New York, NY, USA},
	author = {Buck, Duane   and Stucki, David  J. },
	booktitle = {SIGCSE '00: Proceedings of the thirty-first SIGCSE technical symposium on Computer science education},
	citeulike-article-id = {2061126},
	doi = {10.1145/330908.331817},
	issn = {0097-8418},
	keywords = {design, education},
	pages = {75--79},
	posted-at = {2007-12-05 14:36:24},
	priority = {5},
	publisher = {ACM},
	title = {Design early considered harmful: graduated exposure to complexity and structure based on levels of cognitive development},
	url = {http://portal.acm.org/citation.cfm?id=330908.331817},
	year = {2000}
}



@inproceedings{citeulike:2061025,
	address = {New York, NY, USA},
	author = {Eckerdal, Anna   and Mccartney, Robert   and Mostr\"om, Jan  E.  and Ratcliffe, Mark   and Zander, Carol  },
	booktitle = {SIGCSE '06: Proceedings of the 37th SIGCSE technical symposium on Computer science education},
	citeulike-article-id = {2061025},
	doi = {10.1145/1121341.1121468},
	isbn = {1595932593},
	keywords = {design, education, software},
	pages = {403--407},
	posted-at = {2007-12-05 14:19:49},
	priority = {5},
	publisher = {ACM},
	title = {Can graduating students design software systems?},
	url = {http://portal.acm.org/citation.cfm?id=1121341.1121468},
	year = {2006}
}



@inproceedings{citeulike:2061012,
	address = {New York, NY, USA},
	author = {Alphonce, Carl   and Caspersen, Michael   and Decker, Adrienne  },
	booktitle = {SIGCSE '07: Proceedings of the 38th SIGCSE technical symposium on Computer science education},
	citeulike-article-id = {2061012},
	doi = {10.1145/1227310.1227390},
	issn = {0097-8418},
	keywords = {design-patterns, education},
	pages = {228--232},
	posted-at = {2007-12-05 14:07:08},
	priority = {5},
	publisher = {ACM},
	title = {Killer "killer examples" for design patterns},
	url = {http://portal.acm.org/citation.cfm?id=1227310.1227390},
	year = {2007}
}



@inproceedings{citeulike:2061003,
	address = {New York, NY, USA},
	author = {Docherty, Michael   and Sutton, Peter   and Brereton, Margot   and Kaplan, Simon  },
	booktitle = {SIGCSE '01: Proceedings of the thirty-second SIGCSE technical symposium on Computer Science Education},
	citeulike-article-id = {2061003},
	doi = {10.1145/364447.364591},
	issn = {0097-8418},
	keywords = {computer-science, education},
	pages = {233--237},
	posted-at = {2007-12-05 14:02:23},
	priority = {5},
	publisher = {ACM},
	title = {An innovative design and studio-based CS degree},
	url = {http://portal.acm.org/citation.cfm?id=364591},
	year = {2001}
}



@article{citeulike:845488,
	abstract = {We present the complete results of our 1998 survey of software practitioners. In this survey we asked over 200 software developers and managers from around the world what they thought about 75 educational topics. For each topic, we asked them how much they had learned about it in their formal education, how much they know about it now and how important the topic has been in their career. The objective of the survey was to provide data that can be used to improve the education and training of information technology workers. The results suggest that some widely taught topics perhaps should be taught less, while coverage of other topics should be increased.},
	author = {Lethbridge, Timothy  C. },
	citeulike-article-id = {845488},
	doi = {10.1016/S0164-1212(00)00009-1},
	journal = {Journal of Systems and Software},
	keywords = {education, software-engineering},
	month = {July},
	number = {1},
	pages = {53--71},
	posted-at = {2007-12-05 13:13:08},
	priority = {5},
	title = {Priorities for the education and training of software engineers},
	url = {http://dx.doi.org/10.1016/S0164-1212(00)00009-1},
	volume = {53},
	year = {2000}
}



@article{citeulike:2060820,
	address = {New York, NY, USA},
	author = {Denning, Peter  J. },
	citeulike-article-id = {2060820},
	doi = {10.1145/138859.138870},
	issn = {0001-0782},
	journal = {Commun. ACM},
	keywords = {education, software-engineering},
	month = {December},
	number = {12},
	pages = {82--97},
	posted-at = {2007-12-05 13:10:38},
	priority = {5},
	publisher = {ACM},
	title = {Educating a new engineer},
	url = {http://dx.doi.org/10.1145/138859.138870},
	volume = {35},
	year = {1992}
}



@book{citeulike:115159,
	abstract = {{ Good software developers often  adopt one or several architectural patterns as  strategies for system organization. But, although  they use these patterns purposefully, they often  use them informally and nearly unconsciously. This  book organizes this substantial emerging  "folklore" of system design -- with its rich  language of system description -- and closes the  gap between the useful abstractions (constructs  and patterns) of system design and the current  models, notations and tools. It identifies useful  patterns clearly, gives examples, compares them,  and evaluates their utility in various settings --  allowing readers to develop a repertoire of useful  techniques that goes beyond the single-minded  current fads.  Examines the ways  in which architectural issues can impact software  design; shows how to design new systems in  principled ways using well-understood  architectural paradigms; emphasizes informal  descriptions, touching lightly on formal notations  and specifications, and the tools that support  them; explains how to understand and evaluate the  design of existing software systems from an  architectural perspective; and presents concrete  examples of actual system architectures that can  serve as models for new designs.  For  professional software developers looking for new  ideas about system organization.}},
	author = {Shaw, Mary   and Garlan, David  },
	citeulike-article-id = {115159},
	howpublished = {Paperback},
	isbn = {0131829572},
	keywords = {architecture, book, software-architecture, software-engineering},
	month = {April},
	posted-at = {2007-12-03 11:53:28},
	priority = {4},
	publisher = {{Prentice Hall}},
	title = {Software Architecture: Perspectives on an Emerging Discipline},
	url = {http://www.amazon.ca/exec/obidos/redirect?tag=citeulike09-20\&amp;path=ASIN/0131829572},
	year = {1996}
}

@misc{dcmiam,
	abstract = {This document specifies an abstract model for Dublin Core metadata. The primary purpose of this document is to specify the components and constructs used in Dublin Core metadata. It defines the nature of the components used and describes how those components are combined to create information structures. It provides an information model which is independent of any particular encoding syntax. Such an information model allows us to gain a better understanding of the kinds of descriptions that we are encoding and facilitates the development of better mappings and cross-syntax translations. This document is primarily aimed at the developers of software applications that support Dublin Core metadata, people involved in developing new syntax encoding guidelines for Dublin Core metadata and people developing metadata application profiles based on DCMI vocabularies or on other compatible vocabularies. The DCMI Abstract Model builds on work undertaken by the World Wide Web Consortium (W3C) on the Resource Description Framework (RDF). The use of concepts from RDF is summarized below in Section 5. The DCMI Abstract Model is represented here using UML class diagrams. Readers that are not familiar with UML class diagrams should note that lines ending in a block-arrow should be read as 'is' or 'is a' (for example, "a value is a resource") and that lines starting with a block-diamond should be read as 'contains a' or 'has a' (for example, "a statement contains a property URI"). Other relationships are labeled appropriately. In this document, words and phrases in italics are defined in Section 7, Terminology.},
	author = {Powell, Andy   and Nilsson, Mikael   and Naeve, Ambj\"{o}rn   and Johnston, Pete   and Baker, Thomas  },
	citeulike-article-id = {4793234},
	howpublished = {{DCMI Recommendation}},
	keywords = {dublin-core, standard},
	month = {June},
	posted-at = {2009-06-10 04:27:01},
	priority = {1},
	title = {{DCMI Abstract Model}},
	year = {2007}
}

	

@book{citeulike:2021180,
	author = {Leblanc, R. J.  and Sobel, A.  and Diaz-Herrera, J. L.  and Hilburn, T. B. },
	citeulike-article-id = {2021180},
	keywords = {curriculum, guidelines, software, software-engineering},
	month = {August},
	posted-at = {2007-11-30 02:10:28},
	priority = {0},
	publisher = {IEEE CS and ACM},
	title = {Software Engineering 2004 - Curriculum Guidelines for Undergraduate Degree Programs in Software Engineering},
	year = {2004}
}



@article{dij363143,
	address = {New York, NY, USA},
	author = {Dijkstra, Edsger  W. },
	citeulike-article-id = {2021076},
	doi = {http://doi.acm.org/10.1145/363095.363143},
	journal = {Commun. ACM},
	keywords = {design, layers},
	number = {5},
	pages = {341--346},
	posted-at = {2007-11-30 01:48:39},
	priority = {0},
	publisher = {ACM},
	title = {{The Structure of The THE-multiprogramming System}},
	volume = {11},
	year = {1968}
}



@article{citeulike:2020134,
	address = {New York, NY, USA},
	author = {Lang, Joseph  E.  and Bogovich, Brian  R.  and Barry, Sean  C.  and Durkin, Brian  G.  and Katchmar, Michael  R.  and Kelly, Jonathan  H.  and Mccollum, Michael  J.  and Potts, Michael  },
	citeulike-article-id = {2020134},
	doi = {10.1145/572139.572174},
	issn = {0097-8418},
	journal = {SIGCSE Bull.},
	keywords = {design-patterns, object-oriented-programming},
	month = {December},
	number = {4},
	pages = {68--70},
	posted-at = {2007-11-29 23:10:00},
	priority = {5},
	publisher = {ACM},
	title = {Object-oriented programming and design patterns},
	url = {http://dx.doi.org/10.1145/572139.572174},
	volume = {33},
	year = {2001}
}



@inproceedings{citeulike:2019187,
	abstract = {Industrial systems are examples of complex and often long-lived systems in which software is playing an increasingly important role. Their architectures play a crucial role in maintaining the properties of such systems during their entire life cycle. In this paper, we present the results of a case study based on a series of interviews and a workshop with key personnel from research and development groups of successful international companies in their Swedish locations. The main goal of the investigation was to find the significant factors which influence system and software architectures and to find similarities and differences between the architecture-determining decisions and the architectures of these systems. The role of the architect was an important subject of the investigation. Our findings result in recommendations relating to the design and evolution of system architectures and suggestions regarding areas in which future research would be beneficial.},
	author = {Mustapic, G.  and Wall, A.  and Norstrom, C.  and Crnkovic, I.  and Sandstrom, K.  and Froberg, J.  and Andersson, J. },
	booktitle = {Software Architecture, 2004. WICSA 2004. Proceedings. Fourth Working IEEE/IFIP Conference on},
	citeulike-article-id = {2019187},
	journal = {Software Architecture, 2004. WICSA 2004. Proceedings. Fourth Working IEEE/IFIP Conference on},
	keywords = {architecture, interviews, software, software-architecture, software-engineering},
	pages = {101--111},
	posted-at = {2007-11-29 20:58:04},
	priority = {5},
	title = {Real world influences on software architecture - interviews with industrial system experts},
	url = {http://ieeexplore.ieee.org/xpls/abs\_all.jsp?arnumber=1310694},
	year = {2004}
}



@inproceedings{citeulike:2019029,
	abstract = {A major part of software architecture design is learning how specific architectural designs balance the concerns of stakeholders. We explore the notion of "architectural prototypes", correspondingly architectural prototyping, as a means of using executable prototypes to investigate stakeholders' concerns with respect to a system under development. An architectural prototype is primarily a learning and communication vehicle used to explore and experiment with alternative architectural styles, features, and patterns in order to balance different architectural qualities. The use of architectural prototypes in the development process is discussed, and we argue that such prototypes can play a role throughout the entire process. The use of architectural prototypes is illustrated by three distinct cases of creating software systems. We argue that architectural prototyping can provide key insights that may otherwise be difficult to obtain before a system is built. Furthermore, they define skeleton systems that serve as communication means and knowledge transfer among stakeholders.},
	author = {Bardram, J. E.  and Christensen, H. B.  and Hansen, K. M. },
	booktitle = {Software Architecture, 2004. WICSA 2004. Proceedings. Fourth Working IEEE/IFIP Conference on},
	citeulike-article-id = {2019029},
	journal = {Software Architecture, 2004. WICSA 2004. Proceedings. Fourth Working IEEE/IFIP Conference on},
	keywords = {architecture, education, software, software-architecture, software-engineering},
	pages = {15--24},
	posted-at = {2007-11-29 20:35:25},
	priority = {5},
	title = {Architectural prototyping: an approach for grounding architectural design and learning},
	url = {http://ieeexplore.ieee.org/xpls/abs\_all.jsp?arnumber=1310686},
	year = {2004}
}



@inproceedings{citeulike:2018688,
	abstract = {This paper presents a model for the course "software architecture and design" in our software engineering undergraduate program. This course is a part of our efforts in the ABET accreditation preparation. As systems grow bigger, so grows the need for understanding large scale, complex, and distributed systems, software design (including architecture and detailed design) studies how to describe the high-level structure of software systems. It is a discipline whose importance is growing more and more apparent. It is also one of ten essential areas recommended by computing curriculum software engineering (CCSE) 2003. In spite of its importance, there are almost no dedicated courses at the undergraduate level covering this important discipline, although there is definite interest [J. Tomakyo et al., (2004)]. At Southern Polytechnic State University, as part of our BS in software engineering, we have started offering a course on software architecture and design, which focuses on designing software, at the highest level (software architecture) and the detailed level. In this paper we detail the contents and the pedagogical approach of that course. We describe the structure of this course, its knowledge units, which include design principles, design strategies, architectural design and attributes, detailed design, component-oriented design, and design support tools and evaluation. We also describe the topics in each knowledge unit (for example, design patterns is a topic in detailed design). The strategies for choosing design styles and patterns based on the trade-off of system attributes and combinations of various architectural styles and design patterns are also emphasized. We also present assessment of course outcomes, our experience in teaching this course and plans for further enhancements.},
	author = {Karam, O.  and Qian, K.  and Diaz-Herrera, J. },
	booktitle = {Frontiers in Education, 2004. FIE 2004. 34th Annual},
	citeulike-article-id = {2018688},
	journal = {Frontiers in Education, 2004. FIE 2004. 34th Annual},
	keywords = {architecture, education, software, software-architecture, software-engineering},
	pages = {F2C--4-8 Vol. 2},
	posted-at = {2007-11-29 19:51:27},
	priority = {0},
	title = {{A model for SWE course 'software architecture and design'}},
	url = {http://ieeexplore.ieee.org/xpls/abs\_all.jsp?arnumber=1408593},
	year = {2004}
}

@book{citeulike:3188160,
	abstract = {Component Oriented Programming offers a unique programming-centered approach
to component-based software development that delivers the well-developed
training and practices you need to successfully apply this cost-effective
method. Following an overview of basic theories and methodologies, the authors
provide a unified component infrastructure for building component software
using JavaBeans, EJB, OSGi, CORBA, CCM, .NET, and Web services. You'll learn
how to develop reusable software components; build a software system of pre-
built software components; design and implement a component-based software
system using various component-based approaches. Clear organization and self-
testing features make Component Oriented Programming an ideal textbook for
graduate and undergraduate courses in computer science, software engineering,
or information technology as well as a valuable reference for industry
professionals.},
	author = {Andy and Qian, Kai  },
	citeulike-article-id = {3188160},
	howpublished = {Hardcover},
	isbn = {0471644463},
	keywords = {component-oriented-programming, components, programming, software, software-engineering},
	month = {March},
	posted-at = {2008-09-03 21:38:47},
	priority = {2},
	publisher = {Wiley-Interscience},
	title = {Component-Oriented Programming},
	url = {http://www.amazon.ca/exec/obidos/redirect?tag=citeulike09-20\&amp;path=ASIN/0471644463},
	year = {2005}
}

	

@inproceedings{citeulike:2017967,
	abstract = {There are currently over 20 bachelor of science in software engineering degree programs in the United States. The first accredited software engineering programs in the US are likely in the 2002-03 cycle, and it is expected that the total number of such programs will continue to see steady growth for several years to come. The authors have provided a comparison of programs in order to determine what trends are emerging, which will benefit both current software engineering undergraduate programs, as well as those institutions which are thinking of creating new degrees of this type. The curriculum content of these programs are broken down by subject area and compared with curriculum models and accreditation criteria. The results of a survey of undergraduate software engineering programs worldwide that was conducted by the authors is used both to provide additional data about the U.S. programs and to compare them as a group to their counterparts in other countries.},
	author = {Bagert, D. J.  and Ardis, M. A. },
	booktitle = {Frontiers in Education, 2003. FIE 2003. 33rd Annual},
	citeulike-article-id = {2017967},
	journal = {Frontiers in Education, 2003. FIE 2003. 33rd Annual},
	keywords = {education, software, software-engineering},
	pages = {S3C--1-6 vol.3},
	posted-at = {2007-11-29 18:21:21},
	priority = {5},
	title = {Software engineering baccalaureate programs in the United States: an overview},
	url = {http://ieeexplore.ieee.org/xpls/abs\_all.jsp?arnumber=1265983},
	volume = {3},
	year = {2003}
}



@misc{citeulike:2017145,
	author = {Jaccheri, Letizia   and Torchiano, Marco  },
	citeulike-article-id = {2017145},
	howpublished = {On-line at: http://www.cstc.org/data/resources/216/eCourseEducation.pdf},
	keywords = {architecture, education, software, software-architecture, software-engineering},
	posted-at = {2007-11-29 17:20:01},
	priority = {0},
	title = {Tales from a Software Architecture Course Project},
	year = {2002}
}



@inproceedings{citeulike:2004278,
	abstract = {Students often have a great deal of difficulty specifying their requirements as part of their team project in the software engineering class. Omissions, errors, and vagueness all lead to students having a much harder time in design, code, and test when these problems surface. We wanted to know whether using Z, to help teams further refine their specifications, would produce better specifications. We performed a case study of three different types of student projects, to help determine the advantages/disadvantages of using Z for requirements specification. We found certain decided advantages for some types of projects, and some significant drawbacks for others.},
	author = {Hasson, P.  and Cooper, S. },
	booktitle = {Software Engineering Education and Training, 2004. Proceedings. 17th Conference on},
	citeulike-article-id = {2004278},
	journal = {Software Engineering Education and Training, 2004. Proceedings. 17th Conference on},
	keywords = {education, requirements, software-engineering, z},
	pages = {84--89},
	posted-at = {2007-11-28 14:06:00},
	priority = {3},
	title = {A case study involving the use of Z to aid requirements specification in the software engineering course},
	url = {http://ieeexplore.ieee.org/xpls/abs\_all.jsp?arnumber=1276515},
	year = {2004}
}



@inproceedings{citeulike:2004178,
	abstract = {This paper presents experiences and results from using the post mortem analysis (PMA) method to evaluate student projects in a software architecture course at the Norwegian University of Science and Technology (NTNU). The PMA gave students an opportunity to evaluate their own work as well as evaluating the project as a whole. The results of the analysis revealed several positive and negative issues related to the project that could be used to improve the course for the next year. We also discovered that the PMA gave us a much more detailed evaluation than the more traditional form-based course evaluations. In addition, the students found the PMA method a useful and pratical way of summarising and learning from a project. Since the students got to practice the PMA method, they can also bring this software process improvement practice out to companies when they start working in the IT-industry.},
	author = {Wang, Alf  I.  and Stalhane, T. },
	booktitle = {Software Engineering Education and Training, 2005. CSEE\&T 2005. Proceedings. 18th Conference on},
	citeulike-article-id = {2004178},
	journal = {Software Engineering Education and Training, 2005. CSEE\&T 2005. Proceedings. 18th Conference on},
	keywords = {analysis, architecture, education, evaluation, software, software-architecture, software-engineering},
	pages = {43--50},
	posted-at = {2007-11-28 14:03:05},
	priority = {4},
	title = {Using Post Mortem Analysis to Evaluate Software Architecture Student Projects},
	url = {http://ieeexplore.ieee.org/xpls/abs\_all.jsp?arnumber=1423062},
	year = {2005}
}



@inproceedings{citeulike:2004032,
	abstract = {Today's software industry is characterized by fast growth and diversity. To engineer software in such an environment, software engineers are required to work with large teams and handle large complex systems, involving common off-the-shelf components, open source software and outsourced resources. This poses a serious challenge for software engineering institutions. In this paper, we outline a framework for collaboration among computer science and software engineering programmes within a university with the goal of training students for engineering large, complex systems. We chart a three phase layout for the framework in which students of both programmes work together to simulate the industry's practices by designing, building, integrating and testing a large, complex system. We consider the issue of evaluating students in such a framework and give alternatives for certain variables so as to fit the framework in different environments.},
	author = {Nauman, Mohammad   and Uzair, Muhammad  },
	booktitle = {Software Engineering Education \& Training, 2007. CSEET '07. 20th Conference on},
	citeulike-article-id = {2004032},
	journal = {Software Engineering Education \& Training, 2007. CSEET '07. 20th Conference on},
	keywords = {architecture, education, software, software-architecture, software-engineering},
	pages = {167--174},
	posted-at = {2007-11-28 13:34:05},
	priority = {5},
	title = {SE and CS Collaboration: Training Students for Engineering Large, Complex Systems},
	url = {http://ieeexplore.ieee.org/xpls/abs\_all.jsp?arnumber=4271603},
	year = {2007}
}



@inproceedings{citeulike:2004023,
	abstract = {The Architecture Expert (ArchE) is a software architecture design assistant under development at the Software Engineering Institute (SEI). It embodies knowledge of quality attributes and the relation between the achievement of quality attribute requirements and architecture design. In this paper, we describe the use of ArchE in a graduate level software architecture class at Clemson University. The discussion combines aspects of using ArchE as a tool to produce architectures and using ArchE to teach about architecting. The students were positive about the use of ArchE although critical of ArchE's immaturity. The instructor was also positive about the use of ArchE.},
	author = {Mcgregor, John  D.  and Bachman, Felix   and Bass, Len   and Bianco, Philip   and Klein, Mark  },
	booktitle = {Software Engineering Education \& Training, 2007. CSEET '07. 20th Conference on},
	citeulike-article-id = {2004023},
	journal = {Software Engineering Education \& Training, 2007. CSEET '07. 20th Conference on},
	keywords = {architecture, education, software, software-architecture, software-engineering, tools},
	pages = {275--282},
	posted-at = {2007-11-28 13:32:16},
	priority = {4},
	title = {Using an Architecture Reasoning Tool to Teach Software Architecture},
	url = {http://ieeexplore.ieee.org/xpls/abs\_all.jsp?arnumber=4271615},
	year = {2007}
}



@inproceedings{citeulike:2003998,
	abstract = {Extensive instructional materials have been developed and used for courses in specific software architecture topics offered at the Software Engineering Institute (SEI) at Carnegie Mellon University, to support the instructional goals laid out by the creators of the SEI's professional education program and the designers of the individual courses. However, to date, these courses have lacked any assessment component, certification for the course being granted solely on attendance. For an assessment component to be meaningful, it must derive from and support these instructional goals, determine which goals must be assessed and how to assess them, and determine how best to assess whether those goals have been achieved through application of the instructional materials, lectures, and activities which are included in each two-day course. In order to ensure that the course assessments target the intended learning goals, we developed content for low-stakes assessment components grounded in education theory, combining current knowledge of educational psychology and the software engineering domain to create evaluations that will effectively determine whether participants in this course have learned what the curriculum developers and the instructors intend them to learn.},
	author = {Golden, Elspeth   and Bass, Len  },
	booktitle = {Software Engineering Education \& Training, 2007. CSEET '07. 20th Conference on},
	citeulike-article-id = {2003998},
	journal = {Software Engineering Education \& Training, 2007. CSEET '07. 20th Conference on},
	keywords = {architecture, education, software, software-architecture, software-engineering},
	pages = {283--290},
	posted-at = {2007-11-28 13:28:46},
	priority = {0},
	title = {Creating Meaningful Assessments for Professional Development Education in Software Architecture},
	url = {http://ieeexplore.ieee.org/xpls/abs\_all.jsp?arnumber=4271616},
	year = {2007}
}



@inproceedings{citeulike:2003986,
	abstract = {This paper reports experiences from an experiment in a software architecture course where the focus was both on giving students valuable education as well as getting important empirical results. The paper describes how the experiment was integrated in the course, and presents an evaluation of the experiment from an educational point of view. Further, the paper reflects on the costs and the benefits of carrying out an experiment in the context of a software architecture course for the involved stakeholders namely the researchers, the students, and the instructors. We also describe some guidelines for planning and executing experiments as a part of a software engineering course.},
	author = {Wang, Alf  I.  and Arisholm, Erik   and Jaccheri, Letizia  },
	booktitle = {Software Engineering Education \& Training, 2007. CSEET '07. 20th Conference on},
	citeulike-article-id = {2003986},
	journal = {Software Engineering Education \& Training, 2007. CSEET '07. 20th Conference on},
	keywords = {architecture, education, software, software-architecture, software-engineering},
	pages = {291--300},
	posted-at = {2007-11-28 13:25:46},
	priority = {0},
	title = {Educational Approach to an Experiment in a Software Architecture Course},
	url = {http://ieeexplore.ieee.org/xpls/abs\_all.jsp?arnumber=4271617},
	year = {2007}
}



@article{citeulike:1995777,
	address = {New York, NY, USA},
	author = {Sitariman, Marulli   and Weide, Bruce  },
	citeulike-article-id = {1995777},
	doi = {10.1145/190679.199221},
	issn = {0163-5948},
	journal = {SIGSOFT Softw. Eng. Notes},
	keywords = {components, software, software-engineering},
	month = {October},
	number = {4},
	pages = {21--22},
	posted-at = {2007-11-27 18:25:54},
	priority = {5},
	publisher = {ACM},
	title = {Component-based software using RESOLVE},
	url = {http://dx.doi.org/10.1145/190679.199221},
	volume = {19},
	year = {1994}
}



@inproceedings{citeulike:1995763,
	address = {New York, NY, USA},
	author = {Perry, Dewayne  E. },
	booktitle = {ICSE '97: Proceedings of the 19th international conference on Software engineering},
	citeulike-article-id = {1995763},
	doi = {10.1145/253228.253487},
	isbn = {0897919149},
	keywords = {architecture, software, software-architecture, software-engineering},
	pages = {590--591},
	posted-at = {2007-11-27 18:23:52},
	priority = {5},
	publisher = {ACM},
	title = {An overview of the state of the art in software architecture},
	url = {http://portal.acm.org/citation.cfm?id=253228.253487},
	year = {1997}
}



@article{citeulike:1995738,
	address = {New York, NY, USA},
	author = {Long, Timothy  J.  and Weide, Bruce  W.  and Bucci, Paolo   and Gibson, David  S.  and Hollingsworth, Joe   and Sitaraman, Murali   and Edwards, Steve  },
	citeulike-article-id = {1995738},
	doi = {10.1145/274790.274307},
	issn = {0097-8418},
	journal = {SIGCSE Bull.},
	keywords = {education, software-engineering},
	month = {March},
	number = {1},
	pages = {252--256},
	posted-at = {2007-11-27 18:20:03},
	priority = {3},
	publisher = {ACM},
	title = {Providing intellectual focus to CS1/CS2},
	url = {http://dx.doi.org/10.1145/274790.274307},
	volume = {30},
	year = {1998}
}



@inproceedings{41773,
	address = {Los Alamitos, CA, USA},
	author = {Perry, D. E. },
	booktitle = {ICSE '87: Proceedings of the 9th international conference on Software Engineering},
	citeulike-article-id = {1993306},
	keywords = {interconnection, models, software-engineering},
	pages = {61--69},
	posted-at = {2007-11-27 14:13:06},
	priority = {3},
	publisher = {IEEE Computer Society Press},
	title = {Software interconnection models},
	year = {1987}
}



@article{citeulike:1993278,
	address = {Piscataway, NJ, USA},
	author = {Parnas, D. L.  and Clements, P. C.  and Weiss, D. M. },
	citeulike-article-id = {1993278},
	doi = {10.1109/TSE.1985.232209},
	issn = {0098-5589},
	journal = {IEEE Trans. Softw. Eng.},
	keywords = {architecture, modules, software, software-architecture, software-engineering},
	month = {March},
	number = {3},
	pages = {259--266},
	posted-at = {2007-11-27 14:08:54},
	priority = {3},
	publisher = {IEEE Press},
	title = {The Modular Structure of Complex Systems},
	url = {http://portal.acm.org/citation.cfm?id=1313967},
	volume = {11},
	year = {1985}
}



@techreport{citeulike:1993262,
	address = {Stanford, CA, USA},
	author = {Nii},
	citeulike-article-id = {1993262},
	keywords = {architecture, blackboards, patterns, software, software-architecture, software-engineering},
	posted-at = {2007-11-27 14:06:57},
	priority = {2},
	publisher = {Stanford University},
	title = {Blackboard Systems},
	url = {http://portal.acm.org/citation.cfm?id=892387},
	year = {1986}
}



@techreport{citeulike:1993227,
	author = {Lane, T. },
	citeulike-article-id = {1993227},
	institution = {Software Engineering Institute - Carnegie Mellon University.},
	keywords = {architecture, design, software-architecture},
	month = {November},
	number = {CMU/SEI-90-TR-022},
	posted-at = {2007-11-27 14:00:23},
	priority = {3},
	title = {A Design Space and Design Rules for User Interface Software Architecture},
	year = {1990}
}



@inproceedings{citeulike:503602,
	address = {New York, NY, USA},
	author = {Lampson, Butler  W. },
	booktitle = {SOSP '83: Proceedings of the ninth ACM symposium on Operating systems principles},
	citeulike-article-id = {503602},
	doi = {10.1145/773379.806614},
	issn = {0163-5980},
	keywords = {architecture, design, software, software-architecture, software-engineering},
	month = {October},
	number = {5},
	pages = {33--48},
	posted-at = {2007-11-27 13:46:24},
	priority = {3},
	publisher = {ACM Press},
	title = {Hints for computer system design},
	url = {http://portal.acm.org/citation.cfm?id=806614},
	volume = {17},
	year = {1983}
}



@article{citeulike:1993073,
	address = {New York, NY, USA},
	author = {Andrews, Gregory  R. },
	citeulike-article-id = {1993073},
	doi = {10.1145/103162.103164},
	issn = {0360-0300},
	journal = {ACM Comput. Surv.},
	keywords = {architecture, distributed-systems, software, software-architecture, software-engineering, survey},
	month = {March},
	number = {1},
	pages = {49--90},
	posted-at = {2007-11-27 13:42:20},
	priority = {2},
	publisher = {ACM},
	title = {Paradigms for process interaction in distributed programs},
	url = {http://portal.acm.org/citation.cfm?id=103162.103164},
	volume = {23},
	year = {1991}
}


@article{citeulike:1993105,
	abstract = {This recommended practice addresses the activities of the creation, analysis, and sustainment of architectures of software-intensive systems, and the recording of such architectures in terms of architectural descriptions . A conceptual framework for architectural description is established. The content of an architectural description is defined. Annexes provide the rationale for key concepts and terminology, the relationships to other standards, and examples of usage.},
	author = {{IEEE} and {ISO/IEC}},
	booktitle = {ISO/IEC 42010 IEEE Std 1471-2000 First edition 2007-07-15},
	citeulike-article-id = {1993105},
	journal = {ISO/IEC 42010 IEEE Std 1471-2000 First edition 2007-07-15},
	keywords = {architecture, software, software-architecture, software-engineering, standard},
	month = {July},
	pages = {c1--24},
	posted-at = {2007-11-27 13:33:40},
	priority = {5},
	title = {{Systems and Software Engineering - Recommended Practice for Architectural Description of Software-Intensive Systems}},
	url = {http://ieeexplore.ieee.org/xpls/abs\_all.jsp?arnumber=4278472},
	year = {2007}
}

	


@inproceedings{citeulike:1988001,
	address = {Washington, DC, USA},
	author = {Riva, Claudio  },
	booktitle = {WCRE '00: Proceedings of the Seventh Working Conference on Reverse Engineering (WCRE'00)},
	citeulike-article-id = {1988001},
	isbn = {0769508812},
	keywords = {architecture, reconstruction, reverse-engineering, software, software-architecture, software-engineering},
	posted-at = {2007-11-26 19:20:38},
	priority = {0},
	publisher = {IEEE Computer Society},
	title = {Reverse Architecting: An Industrial Experience Report},
	url = {http://portal.acm.org/citation.cfm?id=832307.837111},
	year = {2000}
}



@inproceedings{citeulike:1367764,
	address = {New York, NY, USA},
	author = {Harris, David  R.  and Reubenstein, Howard  B.  and Yeh, Alexander  S. },
	booktitle = {ICSE '95: Proceedings of the 17th international conference on Software engineering},
	citeulike-article-id = {1367764},
	doi = {10.1145/225014.225032},
	isbn = {0897917081},
	keywords = {architecture, reconstruction, reverse-engineering, software, software-architecture, software-engineering},
	pages = {186--195},
	posted-at = {2007-11-26 18:46:15},
	priority = {3},
	publisher = {ACM Press},
	title = {Reverse engineering to the architectural level},
	url = {http://portal.acm.org/citation.cfm?id=225032},
	year = {1995}
}



@inproceedings{citeulike:853433,
	author = {Shaw, M. },
	citeulike-article-id = {853433},
	journal = {Software Engineering, 2001. ICSE 2001. Proceedings of the 23rd International Conference on},
	keywords = {architecture, education, software-architecture, software-engineering},
	pages = {657--664a},
	posted-at = {2007-11-26 13:57:02},
	priority = {4},
	title = {The coming-of-age of software architecture research},
	url = {http://ieeexplore.ieee.org/xpls/abs\_all.jsp?arnumber=919147},
	year = {2001}
}



@inproceedings{citeulike:1986444,
	address = {New York, NY, USA},
	author = {Shaw, Mary  },
	booktitle = {ICSE '00: Proceedings of the Conference on The Future of Software Engineering},
	citeulike-article-id = {1986444},
	doi = {10.1145/336512.336592},
	isbn = {1581132530},
	keywords = {education, software-engineering},
	pages = {371--380},
	posted-at = {2007-11-26 13:56:09},
	priority = {4},
	publisher = {ACM},
	title = {Software engineering education: a roadmap},
	url = {http://portal.acm.org/citation.cfm?id=336512.336592},
	year = {2000}
}



@article{johnson1992fte,
	author = {Johnson, S. D. },
	citeulike-article-id = {1986404},
	journal = {Journal of Technology Education},
	keywords = {education},
	number = {2},
	pages = {29--40},
	posted-at = {2007-11-26 13:44:07},
	priority = {2},
	title = {{A framework for technology education curricula which emphasizes intellectual processes}},
	volume = {3}
}



@article{brown1989sca,
	author = {Brown, J. S.  and Collins, A.  and Duguid, P. },
	citeulike-article-id = {1986380},
	journal = {Educational Researcher},
	keywords = {education},
	number = {1},
	posted-at = {2007-11-26 13:37:08},
	priority = {2},
	title = {{Situated Cognition and the Culture of Learning}},
	volume = {18},
	year = {1989}
}



@article{duncan1996cac,
	author = {Duncan, S. L. S. },
	citeulike-article-id = {1986369},
	journal = {Journal of industrial teacher education},
	keywords = {apprenticeship, education},
	number = {3},
	pages = {66--86},
	posted-at = {2007-11-26 13:34:26},
	priority = {2},
	title = {{Cognitive apprenticeship in classroom instruction: implications for industrial and technical teacher education.}},
	volume = {33},
	year = {1996}
}



@inproceedings{citeulike:1986203,
	abstract = {Software architecture is a relatively new software engineering discipline that has emerged as a response to the growing complexity of software systems and the problems these systems attempt to solve. Software is becoming the dominant component of most aerospace systems and it is necessary for the aerospace software development community to develop new practices, principles, and standards to manage this growing complexity. The Jet Propulsion Laboratory (JPL) has developed and implemented a year-long educational program designed to develop expertise in software architectures and to train future software architects. Now in its third year, the software architect program (SWAP) selects senior software engineers and then apprentices them as software architects. The objective of this paper is to describe the structure of the SWAP, the program's background, how the program has evolved, and the lessons learned from the implementation of this educational program.},
	author = {Vickers, B. },
	booktitle = {Aerospace Conference, 2004. Proceedings. 2004 IEEE},
	citeulike-article-id = {1986203},
	journal = {Aerospace Conference, 2004. Proceedings. 2004 IEEE},
	keywords = {architecture, education, software-architecture, software-engineering},
	pages = {4155--4161 Vol.6},
	posted-at = {2007-11-26 12:39:30},
	priority = {0},
	title = {Architecting a software architect},
	url = {http://ieeexplore.ieee.org/xpls/abs\_all.jsp?arnumber=1368238},
	volume = {6},
	year = {2004}
}



@inproceedings{citeulike:1982948,
	abstract = {Static analysis aims at recovering the structure of a software system, while dynamic analysis focuses on its run time behaviour. We propose a technique for combining the analysis of static and dynamic architectural information to support the task of architecture reconstruction. The approach emphasises the correct choice of architecturally significant concepts for the reconstruction process and relies on abstraction techniques for their manipulation. The technique allows the software architect to create a set of architectural views valuable for the architecture description of the system. To support our technique, we outline an environment that relies on hierarchical typed directed graphs to show the system's structure and message sequence charts for its behaviour. The main features of the environment are: visualisation of static and dynamic views, synchronisation of abstractions performed on the views, scripting support and management of the use cases. The approach and the environment are demonstrated with an example},
	author = {Riva, C.  and Rodriguez, J. V. },
	booktitle = {Software Maintenance and Reengineering, 2002. Proceedings. Sixth European Conference on},
	citeulike-article-id = {1982948},
	journal = {Software Maintenance and Reengineering, 2002. Proceedings. Sixth European Conference on},
	keywords = {architecture, reconstruction, reverse-engineering, software, software-architecture, software-engineering},
	pages = {47--55},
	posted-at = {2007-11-26 01:07:51},
	priority = {3},
	title = {Combining static and dynamic views for architecture reconstruction},
	url = {http://ieeexplore.ieee.org/xpls/abs\_all.jsp?arnumber=995789},
	year = {2002}
}



@inproceedings{citeulike:1982930,
	abstract = {Software architecture is important for large systems in which it is the main means for among other things, controlling complexity. Current ideas on software architectures were not available more than ten years ago. Software developed at that time has been deteriorating from an architectural point of view over the years, as a result of adaptations made in the software because of changing system requirements. Parts of the old software are nevertheless still being used in new product lines. To make changes in that software, like adding features, it is imperative to first adapt the software to accommodate those changes. Architecture improvement of existing software is therefore becoming more and more important. The paper describes a two-phase process for software architecture improvement, which is the synthesis of two research areas: the architecture visualisation and analysis area of Philips Research, and the transformation engines and renovation factories area of the University of Amsterdam. Software architecture transformation plays an important role, and is to our knowledge a new research topic. Phase one of the process is based on Relation Partition Algebra (RPA). By lifting the information to higher levels of abstraction and calculating metrics over the system, all kinds of quality aspects can be investigated. Phase two is based on formal transformation techniques on abstract syntax trees. The software architecture improvement process allows for a fast feedback loop on results, without the need to deal with the complete software and without any interference with the normal development process},
	author = {Krikhaar, R.  and Postma, A.  and Sellink, A.  and Stroucken, M.  and Verhoef, C. },
	booktitle = {Software Maintenance, 1999. (ICSM '99) Proceedings. IEEE International Conference on},
	citeulike-article-id = {1982930},
	journal = {Software Maintenance, 1999. (ICSM '99) Proceedings. IEEE International Conference on},
	keywords = {architecture, methods, process, software, software-architecture, software-engineering},
	pages = {371--380},
	posted-at = {2007-11-26 01:00:22},
	priority = {3},
	title = {A two-phase process for software architecture improvement},
	url = {http://ieeexplore.ieee.org/xpls/abs\_all.jsp?arnumber=792635},
	year = {1999}
}



@inproceedings{citeulike:1982920,
	address = {New York, NY, USA},
	author = {Kazman, Rick  },
	booktitle = {Joint proceedings of the second international software architecture workshop (ISAW-2) and international workshop on multiple perspectives in software development (Viewpoints '96) on SIGSOFT '96 workshops},
	citeulike-article-id = {1982920},
	doi = {10.1145/243327.243618},
	isbn = {0897918673},
	keywords = {analysis, architecture, design, software-architecture, software-engineering, tools},
	pages = {94--97},
	posted-at = {2007-11-26 00:58:32},
	priority = {3},
	publisher = {ACM},
	title = {Tool support for architecture analysis and design},
	url = {http://portal.acm.org/citation.cfm?id=243327.243618},
	year = {1996}
}



@techreport{citeulike:1982915,
	abstract = {Architecture reconstruction is the process where the "as-built" architecture of an implemented system is obtained from the existing legacy system. This is done through a detailed analysis of the system using tool support. The tools extract information about the system and aid in building and aggregating successive levels of abstraction. If the reconstruction is successful, the end result is an architectural representation of the system that aids in reasoning about the system. In some cases, it may not be possible to generate a useful representation due to the system.

In this report, we describe the process of architecture reconstruction using the Dali architecture reconstruction workbench. We outline guidelines for reconstructing the architectural representations of existing systems. The process that is undertaken to reconstruct an architecture can be supported by other tools and in fact can be done manually.},
	author = {Kazman, Rick   and O'Brien, Liam   and Verhoef, Chris  },
	citeulike-article-id = {1982915},
	institution = {Software Engineering Institute - Carnegie Mellon University.},
	keywords = {architecture, reconstruction, reverse-engineering, software, software-architecture, software-engineering},
	month = {August},
	number = {CMU/SEI-2001-TR-026},
	posted-at = {2007-11-26 00:56:04},
	priority = {0},
	title = {Architecture Reconstruction Guidelines},
	year = {2001}
}



@inproceedings{citeulike:1982904,
	abstract = {Understanding the architecture of a program requires determining both the major components into which the system is broken and the ways in which the components interact to accomplish the program's goals. Both static and dynamic analyses of the software can aid in obtaining this understanding. The paper describes an analysis technique for gaining such understanding and a visualization tool, called ISVis, that supports it. The technique is applied to the problem of enhancing the Mosaic Web browser by both visualizing its architecture and finding the components of the browser into which an enhancement should be inserted},
	author = {Jerding, D.  and Rugaber, S. },
	booktitle = {Reverse Engineering, 1997. Proceedings of the Fourth Working Conference on},
	citeulike-article-id = {1982904},
	journal = {Reverse Engineering, 1997. Proceedings of the Fourth Working Conference on},
	keywords = {architecture, reconstruction, reverse-engineering, software, software-architecture, software-engineering},
	pages = {56--65},
	posted-at = {2007-11-26 00:50:43},
	priority = {3},
	title = {Using visualization for architectural localization and extraction},
	url = {http://ieeexplore.ieee.org/xpls/abs\_all.jsp?arnumber=624576},
	year = {1997}
}



@inproceedings{citeulike:1982898,
	address = {Deventer, The Netherlands, The Netherlands},
	author = {Guo, George  Y.  and Atlee, Joanne  M.  and Kazman, Rick  },
	booktitle = {WICSA1: Proceedings of the TC2 First Working IFIP Conference on Software Architecture (WICSA1)},
	citeulike-article-id = {1982898},
	isbn = {0792384539},
	keywords = {architecture, methods, reconstruction, reverse-engineering, software, software-architecture, software-engineering},
	pages = {15--34},
	posted-at = {2007-11-26 00:48:24},
	priority = {3},
	publisher = {Kluwer, B.V.},
	title = {A Software Architecture Reconstruction Method},
	url = {http://portal.acm.org/citation.cfm?id=696370},
	year = {1999}
}



@inproceedings{citeulike:1982891,
	abstract = {Many software systems do not have a documented system architecture. These are often large, complex systems that are difficult to understand and maintain. One approach to recovering the understanding of a system is to extract architectural documentation from the system implementation. To evaluate the effectiveness of this approach, we extracted architectural documentation from the Linux<sup>TM</sup> kernel. The Linux kernel is a good candidate for a case study because it is a large (800 KLOC) system that is in widespread use and it is representative of many existing systems. Our study resulted in documentation that is useful for understanding the Linux system structure. Also, we learned several useful lessons about extracting a system's architecture},
	author = {Bowman, I. T.  and Holt, R. C.  and Brewster, N. V. },
	booktitle = {Software Engineering, 1999. Proceedings of the 1999 International Conference on},
	citeulike-article-id = {1982891},
	journal = {Software Engineering, 1999. Proceedings of the 1999 International Conference on},
	keywords = {architecture, case-study, linux, reconstruction, reverse-engineering, software, software-architecture, software-engineering},
	pages = {555--563},
	posted-at = {2007-11-26 00:45:31},
	priority = {3},
	title = {Linux as a case study: its extracted software architecture},
	url = {http://ieeexplore.ieee.org/xpls/abs\_all.jsp?arnumber=841045},
	year = {1999}
}



@inproceedings{citeulike:1982513,
	address = {Deventer, The Netherlands, The Netherlands},
	author = {Riva, Claudio  },
	booktitle = {WICSA 3: Proceedings of the IFIP 17th World Computer Congress - TC2 Stream / 3rd IEEE/IFIP Conference on Software Architecture},
	citeulike-article-id = {1982513},
	isbn = {1402071760},
	keywords = {architecture, reconstruction, software-architecture, software-engineering},
	pages = {159--173},
	posted-at = {2007-11-25 22:09:51},
	priority = {1},
	publisher = {Kluwer, B.V.},
	title = {Architecture Reconstruction in Practice},
	url = {http://portal.acm.org/citation.cfm?id=693933},
	year = {2002}
}



@article{citeulike:1959207,
	abstract = {A key problem in software engineering is changing the code. We present a sequence of visualizations and visual metaphors designed to help engineers understand and manage the software change process. The principal metaphors are matrix views, cityscapes, bar and pie charts, data sheets and networks. Linked by selection mechanisms, multiple views are combined to form perspectives that both enable discovery of high-level structure in software change data and allow effective access to details of those data. Use of the views and perspectives is illustrated in two important contexts: understanding software change by exploration of software change data and management of software development. Our approach complements existing visualizations of software structure and software execution},
	author = {Eick, S. G.  and Graves, T. L.  and Karr, A. F.  and Mockus, A.  and Schuster, P. },
	booktitle = {Transactions on Software Engineering},
	citeulike-article-id = {1959207},
	journal = {Transactions on Software Engineering},
	keywords = {evolution, software, software-engineering, visualization},
	number = {4},
	pages = {396--412},
	posted-at = {2007-11-22 13:42:34},
	priority = {0},
	title = {Visualizing software changes},
	url = {http://ieeexplore.ieee.org/xpls/abs\_all.jsp?arnumber=995435},
	volume = {28},
	year = {2002}
}



@inproceedings{citeulike:80546,
	abstract = {The experiences of four years teaching systems architecting are described. The duration of the course systems architecting is 5 days. The target audience consists of (potential) architects and stakeholders that cooperate intensely with the architect, such as project leaders, product managers, and group leaders. The course has been given 23 times in the period November 1999 to January 2004. The maximum number of participants is 16. This paper discusses the course content and the course objectives, course materials, the course format, some course statistics, the expectations of the students up front and the evaluation at the end, the follow-up and the longer term results, the derived course for managers, the lack of visibility of system architects, and the broader education context that is required for a systems architecting curriculum.},
	author = {Muller, Gerrit  },
	booktitle = {INCOSE International Symposium},
	citeulike-article-id = {1959215},
	keywords = {architecture, education, software, software-architecture, software-engineering},
	posted-at = {2007-11-22 13:41:00},
	priority = {0},
	title = {Experiences of Teaching Systems Architetcing},
	year = {2004}
}



@article{citeulike:1944112,
	abstract = {With the growing impact of information technology the proper understanding of IT-architecture designs is becoming ever more important. Much debate has been going on about how to describe them. In 2000, the IEEE Std 1471 proposed a model of an architecture description and its context. In this paper we propose a lightweight method for modeling architectural information after (part of) the conceptual model of IEEE Std 1471 and defining IEEE Std 1471 viewpoints. The method gives support by outlining in textual form and in diagram form the relation of the concerns of the stakeholders to the architectural information. The definition of viewpoints can then be done with insight from these relations. The method has four steps: (1) creating stakeholder profiles, (2) summarizing internal design documentation, (3) relating the summary to the concerns of the stakeholders, and (4) defining viewpoints. We have conducted a round of discussion and testing in practice in various settings. In this paper we present the feedback we received and propose improvements.},
	author = {Koning, Henk   and van Vliet, Hans  },
	citeulike-article-id = {1944112},
	doi = {10.1016/j.jss.2005.02.023},
	journal = {Journal of Systems and Software},
	keywords = {architecture, methods, software-architecture, software-engineering, view, viewpoint},
	month = {January},
	number = {1},
	pages = {120--131},
	posted-at = {2007-11-20 18:31:21},
	priority = {5},
	title = {A method for defining IEEE Std 1471 viewpoints},
	url = {http://dx.doi.org/10.1016/j.jss.2005.02.023},
	volume = {79},
	year = {2006}
}



@article{citeulike:1271073,
	address = {New York, NY, USA},
	author = {Hazzan, Orit  },
	citeulike-article-id = {1271073},
	doi = {10.1016/S0164-1212(02)00012-2},
	issn = {0164-1212},
	journal = {J. Syst. Softw.},
	keywords = {education, software, software-engineering},
	month = {September},
	number = {3},
	pages = {161--171},
	posted-at = {2007-11-20 18:09:58},
	priority = {0},
	publisher = {Elsevier Science Inc.},
	title = {The reflective practitioner perspective in software engineering education},
	url = {http://portal.acm.org/citation.cfm?id=771440},
	volume = {63},
	year = {2002}
}



@inproceedings{IST-TEC-97-03,
	author = {Lucas, Peter  },
	booktitle = {5th Annual Conference on the Teaching of Computing},
	citeulike-article-id = {1939258},
	keywords = {architecture, education, software, software-architecture, software-engineering},
	month = {August},
	organization = {Center for Teaching Computing, Dublin City University},
	posted-at = {2007-11-19 20:33:28},
	priority = {5},
	title = {On Teaching Software Architecture Precisely},
	url = {ftp://ftp.ist.tu-graz.ac.at/pub/publications/IST-TEC-97-03.ps.gz},
	year = {1997}
}



@incollection{citeulike:1939087,
	abstract = {A two-semester sequence in Software Engineering has been offered to Computer Science undergraduates at Purdue University since the fall of 1991. An attempt was made to balance the teaching of theory and practice of software engineering and provide the students with an opportunity to apply some of the techniques learned in the classroom to a controlled development project. The project was selected from an industrial setting and the product developed was returned to industry. We describe the architecture of the offering and our experience during the first offering in Fall 1991 and Spring 1992.},
	author = {Boardman, David   and Mathur, Aditya  },
	citeulike-article-id = {1939087},
	doi = {10.1007/BFb0017604},
	journal = {Software Engineering Education},
	keywords = {architecture, education, software, software-architecture, software-engineering},
	pages = {3--22},
	posted-at = {2007-11-19 20:12:18},
	priority = {5},
	title = {A two-semester undergraduate sequence in Software Engineering: Architecture and experience},
	url = {http://dx.doi.org/10.1007/BFb0017604},
	year = {1994}
}



@inproceedings{citeulike:1934366,
	abstract = {During software evolution, information about changes between different versions of a program is useful for a number of software engineering tasks. For many of these tasks, a purely syntactic differencing may not provide enough information for the task to be performed effectively. This problem is especially relevant in the case of object-oriented software, for which a syntactic change can have subtle and unforeseen effects. We present a technique for comparing object-oriented programs that identifies both differences and correspondences between two versions of a program. The technique is based on a representation that handles object-oriented features and, thus, can capture the behavior of object-oriented programs. We also present JDIFF, a tool that implements the technique for Java programs, and empirical results that show the efficiency and effectiveness of the technique on a real program.},
	author = {Apiwattanapong, T.  and Orso, A.  and Harrold, M. J. },
	booktitle = {Automated Software Engineering, 2004. Proceedings. 19th International Conference on},
	citeulike-article-id = {1934366},
	journal = {Automated Software Engineering, 2004. Proceedings. 19th International Conference on},
	keywords = {design, differencing, evolution, software, software-engineering, software-evolution},
	pages = {2--13},
	posted-at = {2007-11-18 20:59:30},
	priority = {0},
	title = {A differencing algorithm for object-oriented programs},
	url = {http://ieeexplore.ieee.org/xpls/abs\_all.jsp?arnumber=1342719},
	year = {2004}
}



@article{citeulike:1914281,
	address = {New York, NY, USA},
	author = {Tracz, Will  },
	citeulike-article-id = {1914281},
	doi = {10.1145/181628.181639},
	editor = {Tracz, Will  },
	issn = {0163-5948},
	journal = {SIGSOFT Softw. Eng. Notes},
	keywords = {architecture, product-lines, software, software-architecture, software-engineering},
	month = {April},
	number = {2},
	pages = {52--56},
	posted-at = {2007-11-14 14:11:46},
	priority = {4},
	publisher = {ACM},
	title = {Domain-specific software architecture (DSSA) frequently asked questions (FAQ)},
	url = {http://portal.acm.org/citation.cfm?id=181639},
	volume = {19},
	year = {1994}
}



@inproceedings{citeulike:1914264,
	address = {New York, NY, USA},
	author = {Medvidovic, Nenad   and Taylor, Richard  N. },
	booktitle = {ISAW '98: Proceedings of the third international workshop on Software architecture},
	citeulike-article-id = {1914264},
	doi = {10.1145/288408.288435},
	isbn = {1581130813},
	keywords = {architecture, education, software, software-architecture, software-engineering},
	pages = {105--108},
	posted-at = {2007-11-14 14:07:25},
	priority = {5},
	publisher = {ACM},
	title = {Separating fact from fiction in software architecture},
	url = {http://portal.acm.org/citation.cfm?id=288435},
	year = {1998}
}



@article{citeulike:1914258,
	address = {New York, NY, USA},
	author = {Tracz, Will  },
	citeulike-article-id = {1914258},
	doi = {10.1145/219308.219318},
	issn = {0163-5948},
	journal = {SIGSOFT Softw. Eng. Notes},
	keywords = {architecture, education, product-lines, software, software-architecture, software-engineering},
	month = {July},
	number = {3},
	pages = {49--62},
	posted-at = {2007-11-14 14:06:43},
	priority = {5},
	publisher = {ACM},
	title = {DSSA (Domain-Specific Software Architecture): pedagogical example},
	url = {http://portal.acm.org/citation.cfm?id=219308.219318},
	volume = {20},
	year = {1995}
}



@inproceedings{citeulike:1586336,
	address = {New York, NY, USA},
	author = {Xing, Zhenchang   and Stroulia, Eleni  },
	booktitle = {ASE '05: Proceedings of the 20th IEEE/ACM international Conference on Automated software engineering},
	citeulike-article-id = {1586336},
	doi = {10.1145/1101908.1101919},
	isbn = {1595939934},
	keywords = {design, evolution, software, software-engineering},
	pages = {54--65},
	posted-at = {2007-11-14 00:04:46},
	priority = {0},
	publisher = {ACM Press},
	title = {UMLDiff: an algorithm for object-oriented design differencing},
	url = {http://portal.acm.org/citation.cfm?id=1101919},
	year = {2005}
}



@inproceedings{citeulike:1654302,
	address = {New York, NY, USA},
	author = {Aversano, Lerina   and Canfora, Gerardo   and Cerulo, Luigi   and Del Grosso, Concettina   and Di Penta, Massimiliano  },
	booktitle = {ESEC-FSE '07: Proceedings of the 6th joint meeting of the european software engineering conference and the 14th ACM SIGSOFT symposium on Foundations of software engineering},
	citeulike-article-id = {1654302},
	doi = {10.1145/1287624.1287680},
	isbn = {9781595938114},
	keywords = {design, evolution, software, software-engineering},
	pages = {385--394},
	posted-at = {2007-11-14 00:04:19},
	priority = {0},
	publisher = {ACM Press},
	title = {An empirical study on the evolution of design patterns},
	url = {http://portal.acm.org/citation.cfm?id=1287680},
	year = {2007}
}



@book{SWEBOK2004,
	author = {Abran, Alain   and Moore, James  W.  and Bourque, Pierre   and Dupuis, Robert   and Tripp, Leonard  L. },
	citeulike-article-id = {1695071},
	keywords = {body-of-knowledge, software, software-engineering, swebok},
	posted-at = {2007-11-13 03:54:10},
	priority = {2},
	publisher = {IEEE},
	title = {Guide to the Software Engineering Body of Knowledge (SWEBOK)},
	year = {2004}
}



@book{citeulike:174302,
	author = {Clements, Paul   and Bachmann, Felix   and Bass, Len   and Garlan, David   and Ivers, James   and Little, Reed   and Nord, Robert   and Stafford, Judith  },
	citeulike-article-id = {174302},
	howpublished = {Hardcover},
	isbn = {0201703726},
	keywords = {architecture, documentation, notations, software, software-architecture, software-engineering},
	month = {September},
	posted-at = {2007-11-13 03:09:33},
	priority = {3},
	publisher = {{Addison-Wesley Professional}},
	title = {Documenting Software Architectures: Views and Beyond},
	url = {http://www.amazon.ca/exec/obidos/redirect?tag=citeulike09-20\&amp;path=ASIN/0201703726},
	year = {2002}
}



@book{citeulike:171548,
	author = {Clements, Paul   and Kazman, Rick   and Klein, Mark  },
	citeulike-article-id = {171548},
	howpublished = {Hardcover},
	isbn = {020170482X},
	keywords = {architecture, evaluation, software, software-architecture, software-engineering},
	month = {January},
	posted-at = {2007-11-13 03:06:42},
	priority = {3},
	publisher = {{Addison-Wesley Professional}},
	title = {Evaluating Software Architectures: Methods and Case Studies},
	url = {http://www.amazon.ca/exec/obidos/redirect?tag=citeulike09-20\&amp;path=ASIN/020170482X},
	year = {2002}
}

@book{citeulike:1376130,
	abstract = {{In this eagerly awaited second edition, Grady Booch draws upon the rich and varied results of those projects and offers improved methods for object development and a new, unified notation.  With numerous examples implemented in C++, Booch illustrates essential concepts, explains the method, and shows successful applications in a variety of fields.  Booch also gives  pragmatic advice on a host of issues, including classification, implementation strategies, and cost-effective project management.  A two-time winner of <B>Software Development's</B> coveted <B>Jolt Cola Product Excellence Award!</B>} {<p><b>Object-Oriented Design with Applications</b> has long been the essential reference to object-oriented technology, which, in turn, has evolved to join the mainstream of industrial-strength software development. In this third edition--the first revision in 13 years--readers can learn to apply object-oriented methods using new paradigms such as Java, the Unified Modeling Language (UML) 2.0, and .NET.</p><p>The authors draw upon their rich and varied experience to offer improved methods for object development and numerous examples that tackle the complex problems faced by software engineers, including systems architecture, data acquisition, cryptoanalysis, control systems, and Web development. They illustrate essential concepts, explain the method, and show successful applications in a variety of fields. You'll also find pragmatic advice on a host of issues, including classification, implementation strategies, and cost-effective project management.</p><p>New to this new edition are</p><ul><li>An introduction to the new UML 2.0, from the notation's most fundamental and advanced elements with an emphasis on key changes</li><li>New domains and contexts</li><li>A greatly enhanced focus on modeling--as eagerly requested by readers--with five chapters that each delve into one phase of the overall development lifecycle.</li><li>Fresh approaches to reasoning about complex systems</li><li>An examination of the conceptual foundation of the widely misunderstood fundamental elements of the object model, such as abstraction, encapsulation, modularity, and hierarchy</li><li>How to allocate the resources of a team of developers and mange the risks associated with developing complex software systems</li><li>An appendix on object-oriented programming languages</li></ul><p>This is the seminal text for anyone who wishes to use object-oriented technology to manage the complexity inherent in many kinds of systems.</p>}},
	author = {Booch, Grady   and Maksimchuk, Robert  A.  and Engel, Michael  W.  and Young, Bobbi  J.  and Conallen, Jim   and Houston, Kelli  A. },
	citeulike-article-id = {1376130},
	howpublished = {Hardcover},
	isbn = {020189551X},
	keywords = {analysis, book, design, object-oriented-programming},
	month = {April},
	posted-at = {2008-06-26 13:50:39},
	priority = {2},
	publisher = {{Addison-Wesley Professional}},
	title = {Object-Oriented Analysis and Design with Applications (3rd Edition)},
	url = {http://www.amazon.ca/exec/obidos/redirect?tag=citeulike09-20\&amp;path=ASIN/020189551X},
	year = {2007}
}

	

@incollection{citeulike:1903696,
	abstract = {Certain features of the object-oriented paradigm are a serious impediment for the runtime performance of object-oriented programs. Although compiler techniques to alleviate this problem were developed over the years, we will present some real-world examples which show that these solutions fall short in making any significant optimizations to systems that are required to be very flexible and highly reusable. As a solution, we propose a radically different approach: using an open compiler to \&\#8221;compile away\&\#8221; whole designs by performing architectural transformations based on programmer annotations. We will discuss this approach in detail and show why it is more suited to solve the efficiency problems inherently associated with object-oriented programming.},
	author = {Tourw\'{e}, Tom   and De Meuter, Wolfgang  },
	citeulike-article-id = {1903696},
	journal = {Compiler Construction},
	keywords = {architecture, evolution, refactoring, software, software-architecture, software-engineering},
	pages = {244--258},
	posted-at = {2007-11-12 18:22:57},
	priority = {4},
	title = {Optimizing Object-Oriented Languages through Architectural Transformations},
	url = {http://www.springerlink.com/content/169ld9ek5u8vrpgl
},
	year = {1999}
}



@article{citeulike:423212,
	address = {Hingham, MA, USA},
	author = {Tokuda, Lance   and Batory, Don  },
	citeulike-article-id = {423212},
	doi = {10.1023/A:1008715808855},
	issn = {0928-8910},
	journal = {Automated Software Engg.},
	keywords = {design, evolution, refactoring, software, software-engineering},
	month = {January},
	number = {1},
	pages = {89--120},
	posted-at = {2007-11-12 18:16:51},
	priority = {4},
	publisher = {Kluwer Academic Publishers},
	title = {Evolving Object-Oriented Designs with Refactorings},
	url = {http://portal.acm.org/citation.cfm?id=592064},
	volume = {8},
	year = {2001}
}



@inproceedings{citeulike:1903651,
	address = {New York, NY, USA},
	author = {Lea, Doug  },
	booktitle = {JAVA '00: Proceedings of the ACM 2000 conference on Java Grande},
	citeulike-article-id = {1903651},
	doi = {10.1145/337449.337465},
	isbn = {1581132883},
	keywords = {concurrency, java},
	pages = {36--43},
	posted-at = {2007-11-12 18:02:58},
	priority = {3},
	publisher = {ACM},
	title = {A Java fork/join framework},
	url = {http://portal.acm.org/citation.cfm?id=337465},
	year = {2000}
}



@article{citeulike:1032789,
	abstract = {Experimentation helps determine the effectiveness of proposed theories and methods. However, computer science has not developed a concise taxonomy of methods for demonstrating the validity of new techniques. Experimentation is a crucial part of attribute evaluation and can help determine whether methods used in accordance with some theory during product development will result in software being as effective as necessary. By looking at multiple examples of technology validation, the authors develop a taxonomy for software engineering experimentation that describes twelve different experimental approaches},
	author = {Zelkowitz, M. V.  and Wallace, D. R. },
	citeulike-article-id = {1032789},
	journal = {Computer},
	keywords = {software, software-engineering, validation},
	number = {5},
	pages = {23--31},
	posted-at = {2007-11-12 17:59:26},
	priority = {3},
	title = {Experimental models for validating technology},
	url = {http://ieeexplore.ieee.org/xpls/abs\_all.jsp?arnumber=675630},
	volume = {31},
	year = {1998}
}



@article{citeulike:1903518,
	abstract = {Dekleva's (1992) study confirms that if you build a system well, it will be maintained more than if you don't. Why! Because maintenance is about product enhancement and a well-built system is easier to enhance. So, if you still believe we can eliminate maintenance by doing our development jobs better, the author has a different view. That's not how it works. When it comes to software maintenance, it's increasingly clear that we should be doing more of it, not less. Maintenance is a unique advantage that the discipline of software brings to the table. Maintenance can be best served not by searching for ways of obliterating it, as some have suggested, but by searching for ways of doing it more effectively and efficiently},
	author = {Glass, R. L. },
	booktitle = {Software, IEEE},
	citeulike-article-id = {1903518},
	journal = {Software, IEEE},
	keywords = {evolution, refactoring, software, software-engineering, software-evolution},
	number = {4},
	pages = {67--68},
	posted-at = {2007-11-12 17:27:33},
	priority = {0},
	title = {Maintenance: less is not more},
	url = {http://ieeexplore.ieee.org/xpls/abs\_all.jsp?arnumber=687948},
	volume = {15},
	year = {1998}
}



@inproceedings{citeulike:1902547,
	abstract = {With special focus on software architectural issues, we report from the first two major phases of a software development project. Our experience suggests that explicit focus on software architecture in these phases was an important key to success. More specifically: Demands for stability, flexibility and proper work organisation in an initial prototyping phase of a project are facilitated by having an explicit architecture. However, the architecture should also allow for certain degrees of freedom for experimentation. Furthermore, in a following evolutionary development phase, architectural redesign is necessary and should be firmly based on experience gained from working within the prototype architecture. Finally, to get it right, the architecture needs to be prototyped, or iterated upon, throughout evolutionary development cycles. In this architectural prototyping process, we address the difficult issue of identifying and evolving functional components in the architecture and point to an architectural strategy a set of architectures, their context and evolution-that was helpful in this respect},
	author = {Christensen, M.  and Damm, C. H.  and Hansen, K. M.  and Sandvad, E.  and Thomsen, M. },
	booktitle = {Technology of Object-Oriented Languages and Systems, 1999. TOOLS 32. Proceedings},
	citeulike-article-id = {1902547},
	journal = {Technology of Object-Oriented Languages and Systems, 1999. TOOLS 32. Proceedings},
	keywords = {architecture, design, evolution, software, software-architecture, software-engineering},
	pages = {2--15},
	posted-at = {2007-11-12 12:12:23},
	priority = {4},
	title = {Design and evolution of software architecture in practice},
	url = {http://ieeexplore.ieee.org/xpls/abs\_all.jsp?arnumber=809410},
	year = {1999}
}



@inproceedings{citeulike:1902380,
	address = {Washington, DC, USA},
	author = {Sadou, Nassima   and Tamzalit, Dalila   and Oussalah, Mourad  },
	booktitle = {IWPSE '05: Proceedings of the Eighth International Workshop on Principles of Software Evolution},
	citeulike-article-id = {1902380},
	doi = {10.1109/IWPSE.2005.4},
	keywords = {architecture, evolution, software, software-architecture, software-engineering},
	pages = {65--70},
	posted-at = {2007-11-12 10:59:15},
	priority = {3},
	publisher = {IEEE Computer Society},
	title = {A unified Approach for Software Architecture Evolution at different abstraction levels},
	url = {http://portal.acm.org/citation.cfm?id=1107840.1108145},
	year = {2005}
}



@inproceedings{citeulike:1902379,
	address = {New York, NY, USA},
	author = {Aoyama, Mikio  },
	booktitle = {IWPSE '02: Proceedings of the International Workshop on Principles of Software Evolution},
	citeulike-article-id = {1902379},
	doi = {10.1145/512035.512059},
	isbn = {1581135459},
	keywords = {analysis, architecture, evolution, metrics, software, software-architecture, software-engineering, software-evolution},
	pages = {103--107},
	posted-at = {2007-11-12 10:58:35},
	priority = {3},
	publisher = {ACM},
	title = {Metrics and analysis of software architecture evolution with discontinuity},
	url = {http://portal.acm.org/citation.cfm?id=512059},
	year = {2002}
}



@inproceedings{citeulike:1900328,
	abstract = {Evolution of software architectures is, different from architectural design, an area that only few tools have covered. We claim this is due to the lack of support for an important concept of architectural evolution: the notion of architectural design decisions. The absence of this concept in architectural evolution leads to several problems. In order to address these problems, we present a set of requirements that tools should support for architectural evolution. We evaluate existing software architecture tools against these architectural requirements. The results are analyzed and an outline for future research directions for architectural evolution tool support is presented.},
	author = {Jansen, A.  and Bosch, J. },
	booktitle = {Automated Software Engineering, 2004. Proceedings. 19th International Conference on},
	citeulike-article-id = {1900328},
	journal = {Automated Software Engineering, 2004. Proceedings. 19th International Conference on},
	keywords = {architecture, evolution, software, software-architecture, software-engineering, software-evolution},
	pages = {375--378},
	posted-at = {2007-11-12 00:24:35},
	priority = {2},
	title = {Evaluation of tool support for architectural evolution},
	url = {http://ieeexplore.ieee.org/xpls/abs\_all.jsp?arnumber=1342768},
	year = {2004}
}



@inproceedings{citeulike:1899213,
	abstract = {Avoiding architectural erosion helps extend the lifetime of an evolving software system. Erosion can be reduced by ensuring that (i) developers share a good understanding of a system's architecture; (ii) alignment is preserved between the architectural description and its implementation at all stages of system construction and maintenance; and (iii) architectural changes are treated with the same care and attention as the production of the initial design. Through the metaphor of 'agile development' we present a lightweight approach to the control of architectural erosion. In particular, it covers the representation of an architectural description and the management of alignment between description and implementation during system evolution. A prototype support tool, ArchAngel, is introduced. This maintains an architectural design description, identifies when changes occur with respect to that description, and reports these changes for evaluation.},
	author = {O'Reilly, C.  and Morrow, P.  and Bustard, D. },
	booktitle = {Software Evolution, 2003. Proceedings. Sixth International Workshop on Principles of},
	citeulike-article-id = {1899213},
	journal = {Software Evolution, 2003. Proceedings. Sixth International Workshop on Principles of},
	keywords = {architecture, evolution, software, software-architecture, software-engineering},
	pages = {59--64},
	posted-at = {2007-11-11 17:26:31},
	priority = {5},
	title = {Lightweight prevention of architectural erosion},
	url = {http://ieeexplore.ieee.org/xpls/abs\_all.jsp?arnumber=1231211},
	year = {2003}
}



@article{citeulike:1275423,
	author = {van Gurp, Jilles   and Bosch, Jan  },
	citeulike-article-id = {1275423},
	doi = {10.1016/S0164-1212(01)00152-2},
	journal = {Journal of Systems and Software},
	keywords = {design, evolution, software, software-engineering},
	month = {March},
	number = {2},
	pages = {105--119},
	posted-at = {2007-11-11 17:20:51},
	priority = {0},
	title = {Design erosion: problems and causes},
	url = {http://dx.doi.org/10.1016/S0164-1212(01)00152-2},
	volume = {61},
	year = {2002}
}



@inproceedings{citeulike:1899192,
	abstract = {In modern software engineering, researchers regard a software system as an organic life form that must continue to evolve to remain successful. Unfortunately, little is known about how successful software systems have evolved, and consequently little has been learned from previous experience. We demonstrate a heuristic to reconstruct evolution processes of existing software systems by exploiting techniques to detect duplication in large amounts of data. A case study, evaluating various versions of Tomcat using this heuristic, revealed that the removal of duplicated code is a much smaller concern than grouping functionality in classes with one clear responsibility.},
	author = {Van Rysselberghe, F.  and Demeyer, S. },
	booktitle = {Software Evolution, 2003. Proceedings. Sixth International Workshop on Principles of},
	citeulike-article-id = {1899192},
	journal = {Software Evolution, 2003. Proceedings. Sixth International Workshop on Principles of},
	keywords = {evolution, refactoring, software, software-evolution},
	pages = {126--130},
	posted-at = {2007-11-11 17:17:51},
	priority = {0},
	title = {Reconstruction of successful software evolution using clone detection},
	url = {http://ieeexplore.ieee.org/xpls/abs\_all.jsp?arnumber=1231219},
	year = {2003}
}



@article{citeulike:395804,
	abstract = {We provide an extensive overview of existing research in the field of software refactoring. This research is compared and discussed based on a number of different criteria: the refactoring activities that are supported, the specific techniques and formalisms that are used for supporting these activities, the types of software artifacts that are being refactored, the important issues that need to be taken into account when building refactoring tool support, and the effect of refactoring on the software process. A running example is used to explain and illustrate the main concepts.},
	author = {Mens, T.  and Tourwe, T. },
	citeulike-article-id = {395804},
	journal = {Software Engineering, IEEE Transactions on},
	keywords = {evolution, refactoring, software, software-engineering, software-evolution},
	number = {2},
	pages = {126--139},
	posted-at = {2007-11-11 17:17:20},
	priority = {0},
	title = {A survey of software refactoring},
	url = {http://ieeexplore.ieee.org/xpls/abs\_all.jsp?arnumber=1265817},
	volume = {30},
	year = {2004}
}



@inproceedings{citeulike:1899184,
	abstract = {Today's information technology society increasingly relies on software at all levels. Nevertheless, software quality generally continues to fall short of expectations, and software systems continue to suffer from symptoms of aging as they are adapted to changing requirements and environments. The only way to overcome or avoid the negative effects of software aging is by placing change and evolution in the center of the software development process. In this article we describe what we believe to be some of the most important research challenges in software evolution. The goal of this document is to provide novel research directions in the software evolution domain.},
	author = {Mens, T.  and Wermelinger, M.  and Ducasse, S.  and Demeyer, S.  and Hirschfeld, R.  and Jazayeri, M. },
	booktitle = {Principles of Software Evolution, Eighth International Workshop on},
	citeulike-article-id = {1899184},
	journal = {Principles of Software Evolution, Eighth International Workshop on},
	keywords = {evolution, software, software-engineering, software-evolution},
	pages = {13--22},
	posted-at = {2007-11-11 17:14:21},
	priority = {2},
	title = {Challenges in software evolution},
	url = {http://ieeexplore.ieee.org/xpls/abs\_all.jsp?arnumber=1572302},
	year = {2005}
}



@inproceedings{citeulike:1889215,
	address = {London, UK},
	author = {Swonger, R. F.  and Scott, C. M.  and Okasaki, Chris   and Shaw, Mary   and Garlan, David  },
	booktitle = {Proceedings of the SEI Conference on Software Engineering Education},
	citeulike-article-id = {1889215},
	isbn = {3540559639},
	keywords = {architecture, education, software, software-architecture, software-engineering},
	pages = {23--43},
	posted-at = {2007-11-09 12:26:39},
	priority = {0},
	publisher = {Springer-Verlag},
	title = {Experience with a Course on Architectures for Software Systems},
	url = {http://portal.acm.org/citation.cfm?id=648326.754921},
	year = {1992}
}



@inproceedings{citeulike:1889205,
	address = {New York, NY, USA},
	author = {Bucci, Paolo   and Long, Timothy  J.  and Weide, Bruce  W. },
	booktitle = {ISAW '98: Proceedings of the third international workshop on Software architecture},
	citeulike-article-id = {1889205},
	doi = {10.1145/288408.288411},
	isbn = {1581130813},
	keywords = {architecture, education, software, software-architecture, software-engineering},
	pages = {9--12},
	posted-at = {2007-11-09 12:21:43},
	priority = {0},
	publisher = {ACM},
	title = {Teaching software architecture principles in CS1/CS2},
	url = {http://dx.doi.org/10.1145/288408.288411},
	year = {1998}
}



@incollection{foote00big,
	author = {Foote, Brian   and Yoder, Joseph  W. },
	booktitle = {Pattern Languages of Program Design},
	citeulike-article-id = {1886983},
	editor = {Harrison, N.  and Foote, B.  and Rohnert, H. },
	keywords = {architecture, patterns, software, software-architecture, software-engineering},
	pages = {654--692},
	posted-at = {2007-11-09 02:31:09},
	priority = {2},
	publisher = {Addison Wesley},
	title = {{Big Ball of Mud}},
	url = {citeseer.ist.psu.edu/foote00big.html},
	volume = {4},
	year = {2000}
}



@inproceedings{citeulike:1886971,
	address = {Deventer, The Netherlands, The Netherlands},
	author = {Hofmeister, Christine   and Nord, Robert  L.  and Soni, Dilip  },
	booktitle = {WICSA1: Proceedings of the TC2 First Working IFIP Conference on Software Architecture (WICSA1)},
	citeulike-article-id = {1886971},
	isbn = {0792384539},
	keywords = {architecture, description, software, software-architecture, software-engineering, uml},
	pages = {145--160},
	posted-at = {2007-11-09 02:24:30},
	priority = {0},
	publisher = {Kluwer, B.V.},
	title = {Describing Software Architecture with UML},
	url = {http://portal.acm.org/citation.cfm?id=646545.696368},
	year = {1999}
}

@misc{citeulike:3339800,
	author = {{Object Management Group, Inc.}},
	citeulike-article-id = {3339800},
	howpublished = {{\texttt{http://www.uml.org}}},
	keywords = {uml},
	month = {September},
	posted-at = {2008-09-26 13:42:17},
	priority = {2},
	title = {Unified Modeling Language},
	year = {2008}
}

@article{kruchten2004oad,
	author = {Kruchten, P. },
	citeulike-article-id = {1886970},
	journal = {2nd Groningen Workshop on Software Variability},
	keywords = {architecture, description, software-architecture, software-engineering},
	pages = {54--61},
	posted-at = {2007-11-09 02:23:49},
	priority = {0},
	title = {{An ontology of architectural design decisions in software intensive systems}},
	year = {2004}
}



@article{batory1998pla,
	address = {Erfurt, Germany},
	author = {Batory, D. },
	citeulike-article-id = {1886944},
	journal = {Smalltalk und Java in Industrie und Ausbildung (Smalltalk and Java in Industry and Practical Training)},
	keywords = {architecture, product-lines, software, software-architecture, software-engineering},
	month = {October},
	posted-at = {2007-11-09 02:14:05},
	priority = {0},
	title = {Product-Line Architectures},
	year = {1998}
}



@inproceedings{citeulike:1886923,
	author = {Tomayko, Jim   and Northrop, L.  and Chenoweth, S.  and Sebern, M.  and Suri, Deepti  },
	booktitle = {Software Engineering Education and Training, 2004. Proceedings. 17th Conference on},
	citeulike-article-id = {1886923},
	journal = {Software Engineering Education and Training, 2004. Proceedings. 17th Conference on},
	keywords = {architecture, education, software, software-architecture, software-engineering},
	pages = {174--174},
	posted-at = {2007-11-09 02:06:07},
	priority = {5},
	title = {Key considerations in teaching software architecture},
	url = {http://ieeexplore.ieee.org/xpls/abs\_all.jsp?arnumber=1276534},
	year = {2004}
}



@article{citeulike:1882212,
	address = {Piscataway, NJ, USA},
	author = {Shaw, Mary   and Deline, Robert   and Klein, Daniel  V.  and Ross, Theodore  L.  and Young, David  M.  and Zelesnik, Gregory  },
	citeulike-article-id = {1882212},
	doi = {10.1109/32.385970},
	issn = {0098-5589},
	journal = {IEEE Trans. Softw. Eng.},
	keywords = {architecture, software-architecture, software-engineering, tools},
	month = {April},
	number = {4},
	pages = {314--335},
	posted-at = {2007-11-08 01:29:11},
	priority = {4},
	publisher = {IEEE Press},
	title = {Abstractions for Software Architecture and Tools to Support Them},
	url = {http://portal.acm.org/citation.cfm?id=205313.205319},
	volume = {21},
	year = {1995}
}



@article{citeulike:328045,
	address = {New York, NY, USA},
	author = {Roshandel, Roshanak   and Van Der Hoek, Andr\&\#233;   and Mikic-Rakic, Marija   and Medvidovic, Nenad  },
	citeulike-article-id = {328045},
	doi = {10.1145/1018210.1018213},
	journal = {ACM Trans. Softw. Eng. Methodol.},
	keywords = {architecture, evolution, software-architecture, software-engineering},
	month = {April},
	number = {2},
	pages = {240--276},
	posted-at = {2007-11-08 01:26:31},
	priority = {4},
	publisher = {ACM Press},
	title = {Mae---a system model and environment for managing architectural evolution},
	url = {http://portal.acm.org/citation.cfm?id=1018213},
	volume = {13},
	year = {2004}
}



@article{citeulike:1882205,
	address = {New York, NY, USA},
	author = {van der Hoek, Andr\'e   and Mikic-Rakic, Marija   and Roshandel, Roshanak   and Medvidovic, Nenad  },
	citeulike-article-id = {1882205},
	doi = {10.1145/503271.503211},
	isbn = {1581133901},
	journal = {SIGSOFT Softw. Eng. Notes},
	keywords = {architecture, evolution, software-architecture, software-engineering},
	month = {September},
	number = {5},
	pages = {1--10},
	posted-at = {2007-11-08 01:26:07},
	priority = {4},
	publisher = {ACM},
	title = {Taming architectural evolution},
	url = {http://portal.acm.org/citation.cfm?id=503271.503211},
	volume = {26},
	year = {2001}
}



@book{citeulike:354167,
	author = {Clements, Paul   and Northrop, Linda   and Northrop, Linda  M. },
	citeulike-article-id = {354167},
	howpublished = {Hardcover},
	isbn = {0201703327},
	keywords = {product-lines, software, software-engineering},
	month = {August},
	posted-at = {2007-11-07 13:41:53},
	priority = {3},
	publisher = {{Addison-Wesley Professional}},
	title = {Software Product Lines : Practices and Patterns},
	url = {http://www.amazon.ca/exec/obidos/redirect?tag=citeulike09-20\&amp;path=ASIN/0201703327},
	year = {2001}
}

@book{citeulike:2878408,
	citeulike-article-id = {2878408},
	editor = {Katki, Freny   and Mcmonegal, Louise   and Meyer, Bennett   and Lane, John   and Wilson, Paul   and Radatz, Jane   and Yee, Mary   and Porteous, Hugh   and Springsteel, Fredrick  },
	isbn = {1559370793},
	keywords = {computer-science, definition},
	posted-at = {2008-06-10 02:16:45},
	priority = {2},
	publisher = {Institute of Electrical and Electronics Engineers Inc., The},
	title = {IEEE Standard Computer Dictionary: Compilation of IEEE Standard Computer Glossaries},
	url = {http://portal.acm.org/citation.cfm?id=574566},
	year = {1991}
}

@book{citeulike:2530329,
	author = {Boehm, Barry  W.  and Brown, John  R.  and Kaspar, Hans   and Lipow, Myron   and Macleod, Gordon  J.  and Merritt, Michael  J. },
	citeulike-article-id = {2530329},
	howpublished = {Hardcover},
	isbn = {0444851054},
	keywords = {architecture, requirements, software, software-architecture, software-engineering},
	posted-at = {2008-06-10 02:13:19},
	priority = {2},
	publisher = {Elsevier},
	title = {Characteristics of Software Quality (TRW series of software technology)},
	url = {http://www.amazon.ca/exec/obidos/redirect?tag=citeulike09-20\&amp;path=ASIN/0444851054},
	year = {1978}
}

@book{citeulike:1875053,
	abstract = {{<P>Job titles like "Technical Architect" and "Chief Architect" nowadays abound in the software industry, yet many people suspect that "architecture" is one of the most overused and least understood terms in professional software development.</P> <P>Gorton's book helps resolve this predicament. It concisely describes the essential elements of knowledge and key skills required to be a software architect. The explanations encompass the essentials of architecture thinking, practices, and supporting technologies. They range from a general understanding of software structure and quality attributes, through technical issues like middleware components and documentation techniques, to emerging technologies like model-driven architecture, software product lines, aspect-oriented design, service-oriented architectures, and the Semantic Web, all of which will influence future software system architectures. </P> <P>All approaches are illustrated by an ongoing real-world example. So if you work as an architect or senior designer (or want to someday), or if you are a student in software engineering, here is a valuable and yet approachable source of knowledge. </P> <P><EM>"Ian's book helps us to head in the right direction through the various techniques and approaches... An essential guide to computer science students as well as developers and IT professionals who aspire to become an IT architect".</EM> (Anna Liu, Architect Advisor, Microsoft Australia)</P>}},
	author = {Gorton, Ian  },
	citeulike-article-id = {1875053},
	howpublished = {Hardcover},
	isbn = {3540287132},
	keywords = {book, software, software-architecture, software-engineering},
	month = {June},
	posted-at = {2007-11-06 19:38:18},
	priority = {5},
	publisher = {Springer},
	title = {Essential Software Architecture},
	url = {http://www.amazon.ca/exec/obidos/redirect?tag=citeulike09-20\&amp;path=ASIN/3540287132},
	year = {2006}
}



@article{citeulike:1875050,
	abstract = {Software product lines are emerging as a viable, important software development paradigm. Based on the Software Engineering Institute's research and experience, the concepts, activities, and practices described here can lead to successful product line development. How-to's, success stories, and lessons learned expand on the approach.},
	author = {Northrop, L. M. },
	booktitle = {Software, IEEE},
	citeulike-article-id = {1875050},
	journal = {Software, IEEE},
	keywords = {product-lines, software, software-architecture, software-engineering},
	number = {4},
	pages = {32--40},
	posted-at = {2007-11-06 19:36:18},
	priority = {0},
	title = {SEI's software product line tenets},
	url = {http://ieeexplore.ieee.org/xpls/abs\_all.jsp?arnumber=1020285},
	volume = {19},
	year = {2002}
}



@article{citeulike:1875042,
	abstract = {Software failure is becoming a serious issue. Ariane 5 provided a recent spectacular example of how a simple mistake, entirely avoidable, was allowed to sneak through the software verification stage and cause an immensely expensive failure. However, it is not just the aerospace industry which suffers such traumas. Here, the author discusses some common misconceptions},
	author = {Hatton, L. },
	booktitle = {IEE Review},
	citeulike-article-id = {1875042},
	journal = {IEE Review},
	keywords = {failures, software, software-engineering},
	number = {2},
	pages = {49--52},
	posted-at = {2007-11-06 19:32:04},
	priority = {5},
	title = {Software failures-follies and fallacies},
	url = {http://ieeexplore.ieee.org/xpls/abs\_all.jsp?arnumber=586152},
	volume = {43},
	year = {1997}
}



@article{citeulike:1851791,
	address = {Piscataway, NJ, USA},
	author = {Fenton, Norman  E.  and Ohlsson, Niclas  },
	citeulike-article-id = {1851791},
	doi = {10.1109/32.879815},
	issn = {0098-5589},
	journal = {IEEE Trans. Softw. Eng.},
	keywords = {metrics, software-engineering},
	month = {August},
	number = {8},
	pages = {797--814},
	posted-at = {2007-11-01 17:14:58},
	priority = {0},
	publisher = {IEEE Press},
	title = {Quantitative Analysis of Faults and Failures in a Complex Software System},
	url = {http://portal.acm.org/citation.cfm?id=631250},
	volume = {26},
	year = {2000}
}



@inproceedings{citeulike:933877,
	address = {New York, NY, USA},
	author = {Mens, Tom   and Demeyer, Serge  },
	booktitle = {IWPSE '01: Proceedings of the 4th International Workshop on Principles of Software Evolution},
	citeulike-article-id = {933877},
	doi = {10.1145/602461.602476},
	isbn = {1581135084},
	keywords = {evolution, metrics, software-engineering},
	pages = {83--86},
	posted-at = {2007-11-01 17:14:19},
	priority = {0},
	publisher = {ACM Press},
	title = {Future trends in software evolution metrics},
	url = {http://portal.acm.org/citation.cfm?id=602476},
	year = {2001}
}



@article{citeulike:1849315,
	address = {New York, NY, USA},
	author = {Tang, Antony   and Jin, Yan   and Han, Jun  },
	citeulike-article-id = {1849315},
	doi = {10.1016/j.jss.2006.08.040},
	issn = {0164-1212},
	journal = {J. Syst. Softw.},
	keywords = {architecture, rationale, software-architecture, software-engineering, traceability},
	month = {June},
	number = {6},
	pages = {918--934},
	posted-at = {2007-11-01 02:55:34},
	priority = {3},
	publisher = {Elsevier Science Inc.},
	title = {A rationale-based architecture model for design traceability and reasoning},
	url = {http://portal.acm.org/citation.cfm?id=1234411.1234496},
	volume = {80},
	year = {2007}
}



@article{citeulike:1849241,
	abstract = {Research into design rationale in the past has focused on argumentation-based design deliberations. These approaches cannot be used to support change impact analysis effectively because the dependency between design elements and decisions are not well represented and cannot be quantified. Without such knowledge, designers and architects cannot easily assess how changing requirements and design decisions may affect the system. In this article, we introduce the Architecture Rationale and Element Linkage (AREL) model to represent the causal relationships between architecture design elements and decisions. We apply Bayesian Belief Networks (BBN) to AREL, to capture the probabilistic causal relationships between design elements and decisions. We employ three different BBN-based reasoning methods to analyse design change impact: predictive reasoning, diagnostic reasoning and combined reasoning. We illustrate the application of the BBN modelling and change impact analysis methods by using a partial design of a real-world cheque image processing system. To support its implementation, we have developed a practical, integrated tool set for the architects to use.},
	author = {Tang, Antony   and Nicholson, Ann   and Jin, Yan   and Han, Jun  },
	citeulike-article-id = {1849241},
	doi = {10.1016/j.jss.2006.04.004},
	journal = {Journal of Systems and Software},
	keywords = {architecture, impact-analysis, software-architecture, software-engineering},
	month = {January},
	number = {1},
	pages = {127--148},
	posted-at = {2007-11-01 02:24:59},
	priority = {3},
	title = {Using Bayesian belief networks for change impact analysis in architecture design},
	url = {http://dx.doi.org/10.1016/j.jss.2006.04.004},
	volume = {80},
	year = {2007}
}



@article{10.1109/ASWEC.2007.39,
	address = {Los Alamitos, CA, USA},
	author = {Farenhorst, Rik   and Lago, Patricia   and van Vliet, Hans  },
	citeulike-article-id = {1849172},
	doi = {http://doi.ieeecomputersociety.org/10.1109/ASWEC.2007.39},
	journal = {2007 Australian Software Engineering Conference (ASWEC'07)},
	keywords = {architecture, methods, software-architecture, software-engineering},
	pages = {27--38},
	posted-at = {2007-11-01 01:55:00},
	priority = {3},
	publisher = {IEEE Computer Society},
	title = {Prerequisites for Successful Architectural Knowledge Sharing},
	year = {2007}
}



@inbook{citeulike:1849154,
	author = {van der Ven, Jan  S.  and Jansen, Anton   and Avgeriou, Paris   and Hammer, Dieter  K. },
	booktitle = {Perspectives in Software Architecture Quality},
	citeulike-article-id = {1849154},
	editor = {Hofmeister, C.  and Crnkovic and Reussner, R.  and Becker, S. },
	keywords = {architecture, decisions, methods, software-architecture, software-engineering},
	pages = {1--10},
	posted-at = {2007-11-01 01:45:57},
	priority = {3},
	publisher = {Universitaet Karlsruhe, Fakultaet fuer Informatik},
	title = {Using Architectural Decisions},
	year = {2006}
}



@techreport{citeulike:1849123,
	author = {Tang, Antony   and Babar, Muhammad  A.  and Gorton, Ian   and Han, Jun  },
	citeulike-article-id = {1849123},
	institution = {Faculty of Information and Communications Technologies - Swinburne University of Technology},
	keywords = {architecture, methods, software-architecture, software-engineering},
	month = {May},
	number = {SUTICT-TR2005.02},
	pages = {1--46},
	posted-at = {2007-11-01 01:28:27},
	priority = {2},
	title = {A Survey on Architecture Design Rationale},
	year = {2005}
}



@article{citeulike:1849069,
	address = {New York, NY, USA},
	author = {Tang, Antony   and Babar, Muhammad  A.  and Gorton, Ian   and Han, Jun  },
	citeulike-article-id = {1849069},
	doi = {10.1016/j.jss.2006.04.029},
	issn = {0164-1212},
	journal = {J. Syst. Softw.},
	keywords = {architecture, methods, software-architecture, software-engineering},
	month = {December},
	number = {12},
	pages = {1792--1804},
	posted-at = {2007-11-01 01:07:05},
	priority = {3},
	publisher = {Elsevier Science Inc.},
	title = {A survey of architecture design rationale},
	url = {http://portal.acm.org/citation.cfm?id=1221781},
	volume = {79},
	year = {2006}
}



@inproceedings{citeulike:1848488,
	address = {New York, NY, USA},
	author = {Lago, Patricia   and van Vliet, Hans  },
	booktitle = {ICSE '05: Proceedings of the 27th international conference on Software engineering},
	citeulike-article-id = {1848488},
	doi = {10.1145/1062455.1062503},
	isbn = {1595939632},
	keywords = {architecture, methods, software-architecture, software-engineering},
	pages = {206--214},
	posted-at = {2007-10-31 20:54:11},
	priority = {4},
	publisher = {ACM},
	title = {Explicit assumptions enrich architectural models},
	url = {http://portal.acm.org/citation.cfm?id=1062503},
	year = {2005}
}



@incollection{citeulike:1848299,
	abstract = {Knowledge management plays an important role in the software architecting process. Recently, this role has become more apparent by a paradigm shift that views a software architecture as the set of architectural design decisions it embodies. This shift has sparked the discussion in both research and practice on how to best facilitate sharing of so-called architectural knowledge, and how tools can best be employed. In order to design successful tool support for architectural knowledge sharing it is important to take into account what software architecting really entails. To this end, in this paper we define the main characteristics of architecting, based on observations in a large software development organization, and state-of-the-art literature in software architecture. Based on the defined characteristics, we determine how best practices known from knowledge management could be used to improve architectural knowledge sharing. This results in the definition of a set of desired properties of architectural knowledge sharing tools. To improve the status quo of architectural knowledge sharing tools, we present the design of an architectural knowledge sharing platform.},
	author = {Farenhorst, Rik   and Lago, Patricia   and van Vliet, Hans  },
	citeulike-article-id = {1848299},
	doi = {10.1007/978-3-540-75132-8\_11},
	journal = {Software Architecture},
	keywords = {architecture, methods, software-architecture},
	pages = {123--138},
	posted-at = {2007-10-31 19:41:31},
	priority = {3},
	title = {Effective Tool Support for Architectural Knowledge Sharing},
	url = {http://dx.doi.org/10.1007/978-3-540-75132-8\_11},
	year = {2007}
}



@inproceedings{citeulike:1847014,
	address = {Washington, DC, USA},
	author = {Lago, Patricia   and van Vliet, Hans  },
	booktitle = {CSEET '05: Proceedings of the 18th Conference on Software Engineering Education \& Training},
	citeulike-article-id = {1847014},
	doi = {10.1109/CSEET.2005.33},
	keywords = {architecture, education, software-architecture},
	pages = {35--42},
	posted-at = {2007-10-31 13:05:26},
	priority = {0},
	publisher = {IEEE Computer Society},
	title = {Teaching a Course on Software Architecture},
	url = {http://portal.acm.org/citation.cfm?id=1058831},
	year = {2005}
}



@article{citeulike:1847016,
	abstract = {During the creation of a software architecture, the architects and stakeholders take a lot of decisions. Many of these decisions can be directly related to functional or quality requirements. Some design decisions, though, are more or less arbitrarily made on the fly because of personal experience, domain knowledge, budget constraints, available expertise, and the like. These decisions, as well as the reasons for those decisions, are often not explicit upfront. They are implicit, and usually remain undocumented. We call them assumptions. There is no accepted way to document assumptions, and the relation between the software architecture and these assumptions easily gets lost, becomes hidden in the girders of the architecture. They are rediscovered at a later stage, when the software evolves and assumptions become invalid or new assumptions contradict earlier ones. In this paper, we develop a method to recover such assumptions from an existing software product. We illustrate the method by applying it to a commercial software product, and show how the results can help assess the evolutionary capabilities of its architecture.},
	author = {Roeller, Ronny   and Lago, Patricia   and van Vliet, Hans  },
	citeulike-article-id = {1847016},
	doi = {10.1016/j.jss.2005.10.017},
	journal = {Journal of Systems and Software},
	keywords = {architecture, decisions, reverse-engineering, software-architecture, software-engineering},
	month = {April},
	number = {4},
	pages = {552--573},
	posted-at = {2007-10-31 13:04:39},
	priority = {4},
	title = {Recovering architectural assumptions},
	url = {http://dx.doi.org/10.1016/j.jss.2005.10.017},
	volume = {79},
	year = {2006}
}



@inproceedings{citeulike:1847004,
	address = {Washington, DC, USA},
	author = {Kruchten, Philippe   and Lago, Patricia   and van Vliet, Hans   and Wolf, Timo  },
	booktitle = {WICSA '05: Proceedings of the 5th Working IEEE/IFIP Conference on Software Architecture (WICSA'05)},
	citeulike-article-id = {1847004},
	doi = {10.1109/WICSA.2005.19},
	isbn = {0769525482},
	keywords = {architecture, methods, software-architecture, software-engineering},
	pages = {291--292},
	posted-at = {2007-10-31 13:00:10},
	priority = {4},
	publisher = {IEEE Computer Society},
	title = {Building up and Exploiting Architectural Knowledge},
	url = {http://portal.acm.org/citation.cfm?id=1130239.1130708},
	year = {2005}
}



@inproceedings{citeulike:1844109,
	abstract = {Architectural knowledge consists of architecture design as well as the design decisions, assumptions, context, and other factors that together determine why a particular solution is the way it is. Except for the architecture design part, most of the architectural knowledge usually remains hidden, tacit in the heads of the architects. We conjecture that an explicit representation of architectural knowledge is helpful for building and evolving quality systems. If we had a repository of architectural knowledge for a system, what would it ideally contain, how would we build it, and exploit it in practice? In this paper we describe a use-case model for an architectural knowledge base, together with its underlying ontology. We present a small case study in which we model available architectural knowledge in a commercial tool, the Aduna Cluster Map Viewer, which is aimed at ontology-based visualization. Putting together ontologies, use cases and tool support, we are able to reason about which types of architecting tasks can be supported, and how this can be done.},
	author = {Kruchten, Philippe   and Lago, Patricia   and van Vliet, Hans  },
	citeulike-article-id = {1844109},
	doi = {10.1007/11921998\_8},
	booktitle = {Quality of Software Architectures},
	keywords = {architecture, methods, software-architecture, software-engineering},
	pages = {43--58},
	posted-at = {2007-10-31 00:55:27},
	priority = {0},
	title = {Building Up and Reasoning About Architectural Knowledge},
	url = {http://dx.doi.org/10.1007/11921998\_8},
	year = {2006}
}



@article{citeulike:1841029,
	address = {New York, NY, USA},
	author = {Parnas, David  L. },
	citeulike-article-id = {1841029},
	doi = {10.1145/1297797.1297815},
	issn = {0001-0782},
	journal = {Commun. ACM},
	keywords = {papers, viewpoint},
	month = {November},
	number = {11},
	pages = {19--21},
	posted-at = {2007-10-30 14:36:48},
	priority = {4},
	publisher = {ACM},
	title = {Stop the numbers game},
	url = {http://portal.acm.org/citation.cfm?id=1297797.1297815},
	volume = {50},
	year = {2007}
}



@article{citeulike:708182,
	abstract = {Change impact analysis is a useful technique in software maintenance and evolution. Many techniques have been proposed to support change impact analysis at the code level of software systems, but little effort has been made for change impact analysis at the architectural level. In this paper, we present an approach to supporting change impact analysis at the architectural level of software systems based on an architectural slicing and chopping technique. The main feature of our approach is to assess the effect of changes in a software architecture by analyzing its formal architectural specification, and, therefore, the process of change impact analysis can be automated completely. Copyright {\copyright} 2002 John Wiley \& Sons, Ltd.},
	address = {Department of Computer Science and Engineering, Fukuoka Institute of Technology, 3-30-1 Wajiro-Higashi, Fukuoka 11-0295, Japan; Computer Science Department, De Montfort University, The Gateway, Leicester LE1 9BH, U.K.; Department of Information Science, Kyushu Sangyo University, 2-3-1 Matsukadai, Fukuoka 813-8503, Japan; Department of Computer Science, Southeast University, Nanjing 210096, People's Republic of China},
	author = {Zhao, Jianjun   and Yang, Hongji   and Xiang, Liming   and Xu, Baowen  },
	citeulike-article-id = {708182},
	doi = {10.1002/smr.258},
	journal = {Journal of Software Maintenance and Evolution: Research and Practice},
	keywords = {architecture, dynamic-impact-analysis, evolution, software, software-architecture, software-engineering, software-evolution},
	number = {5},
	pages = {317--333},
	posted-at = {2007-10-29 20:04:48},
	priority = {4},
	title = {Change impact analysis to support architectural evolution},
	url = {http://portal.acm.org/citation.cfm?id=771448},
	volume = {14},
	year = {2002}
}



@inproceedings{citeulike:1836148,
	address = {Washington, DC, USA},
	author = {Feng, Tie   and Maletic, Jonathan  I. },
	booktitle = {SNPD-SAWN '06: Proceedings of the Seventh ACIS International Conference on Software Engineering, Artificial Intelligence, Networking, and Parallel/Distributed Computing (SNPD'06)},
	citeulike-article-id = {1836148},
	doi = {10.1109/SNPD-SAWN.2006.21},
	isbn = {076952611X},
	keywords = {architecture, dynamic-impact-analysis, software-architecture, software-engineering},
	pages = {43--48},
	posted-at = {2007-10-29 16:37:08},
	priority = {4},
	publisher = {IEEE Computer Society},
	title = {Applying Dynamic Change Impact Analysis in Component-based Architecture Design},
	url = {http://portal.acm.org/citation.cfm?id=1136648.1137004},
	year = {2006}
}



@inproceedings{citeulike:1829307,
	abstract = {Wikipedia is not only one of most popular web sites, it is one of the most open. Same applies to its technology -- everything uses open source, free software, and there are no trade secrets. This allows disclosure of most of Wikipedia's internal technology: * Content delivery network: caching policies, software hacks and evolution, geo-balancing * Application tricks: profiling, load balancing, persistence with PHP, Apache tuning, MediaWiki for Big Sites * Database environment: scale-out, replication, RAIS instead of RAID, optimizations},
	author = {Mituzas, Domas  },
	booktitle = {MySQL Conference \& Expo},
	citeulike-article-id = {1829307},
	howpublished = {Tutorial},
	journal = {MySQL Conference \& Expo},
	keywords = {architecture, case-study, example},
	month = {April},
	posted-at = {2007-10-27 15:43:10},
	priority = {4},
	title = {Wikipedia: Site Internals, Configuration and Code Examples, and Management Issues},
	year = {2007}
}



@inproceedings{citeulike:1827988,
	abstract = {Dynamic impact analysis based on program executions has shown promise in aiding tasks in the life cycle of large-scale systems. Dynamic impact analysis techniques have shown to produce more precise results than static impact analysis [1]. However, current dynamic impact analysis techniques lack important features such as analysis of dependency among program entities and consideration of object-oriented programs' features. Thus they may produce imprecise results. In this paper, we present a precise dynamic impact analysis approach for object-oriented programs. This approach considers the characteristics of object-oriented programs and performs dependency analysis which may potentially reduce the impact sets by eliminating elements that do not have dependency on the changed elements. Even though our discussion in this paper is based on JavaTM programming language, this approach can be carried out in a language independent manner for broader applications.},
	author = {Huang, Lulu   and Song, Yeong-Tae  },
	booktitle = {Software Engineering Research, Management \& Applications, 2007. SERA 2007. 5th ACIS International Conference on},
	citeulike-article-id = {1827988},
	journal = {Software Engineering Research, Management \& Applications, 2007. SERA 2007. 5th ACIS International Conference on},
	keywords = {dynamic-impact-analysis, software, software-engineering},
	pages = {374--384},
	posted-at = {2007-10-27 06:50:09},
	priority = {5},
	title = {Precise Dynamic Impact Analysis with Dependency Analysis for Object-oriented Programs},
	url = {http://ieeexplore.ieee.org/xpls/abs\_all.jsp?arnumber=4296961},
	year = {2007}
}



@inproceedings{citeulike:488174,
	address = {New York, NY, USA},
	author = {Apiwattanapong, Taweesup   and Orso, Alessandro   and Harrold, Mary  J. },
	booktitle = {ICSE '05: Proceedings of the 27th international conference on Software engineering},
	citeulike-article-id = {488174},
	doi = {10.1145/1062455.1062534},
	isbn = {1595939632},
	keywords = {dynamic-impact-analysis, software, software-engineering},
	pages = {432--441},
	posted-at = {2007-10-27 06:48:22},
	priority = {0},
	publisher = {ACM Press},
	title = {Efficient and precise dynamic impact analysis using execute-after sequences},
	url = {http://portal.acm.org/citation.cfm?id=1062534},
	year = {2005}
}



@inproceedings{citeulike:1820562,
	author = {Avgeriou, Paris   and Zdun, Uwe  },
	booktitle = {Proc. 10th European Conf. Pattern Languages of Programs (EuroPLoP)},
	citeulike-article-id = {1820562},
	keywords = {architecture, patterns, software, software-architecture, software-engineering},
	pages = {431--470},
	posted-at = {2007-10-25 11:30:49},
	priority = {0},
	publisher = {UVK Konstanz},
	title = {Architectural Patterns Revisited - A Pattern Language},
	year = {2005}
}



@inproceedings{citeulike:126030,
	author = {McBride, Matthew  R. },
	booktitle = {OOPSLA '04: Companion to the 19th annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications},
	citeulike-article-id = {126030},
	doi = {10.1145/1028664.1028764},
	isbn = {1581138334},
	keywords = {architect, software, software-architecture, software-engineering},
	pages = {230--235},
	posted-at = {2007-10-21 18:32:22},
	priority = {4},
	publisher = {ACM Press},
	title = {The Software Architect: Essence, Intuition, and Guiding Principles},
	url = {http://portal.acm.org/citation.cfm?id=1028764},
	year = {2004}
}



@inproceedings{citeulike:1802027,
	address = {Los Alamitos, CA, USA},
	author = {Royce, W. W. },
	booktitle = {ICSE '87: Proceedings of the 9th international conference on Software Engineering},
	citeulike-article-id = {1802027},
	isbn = {0897912160},
	keywords = {development, software},
	pages = {328--338},
	posted-at = {2007-10-21 18:29:39},
	priority = {3},
	publisher = {IEEE Computer Society Press},
	title = {Managing the development of large software systems: concepts and techniques},
	url = {http://portal.acm.org/citation.cfm?id=41765.41801},
	year = {1987}
}



@article{citeulike:155588,
	abstract = {The rising popularity of refactoring, tools such as JUnit, and agile methodologies such as extreme programming (XP) has brought a new style of design into view. Continuous design is the process of using refactoring to continuously improve a program's design. Continuous design is also known as evolutionary or emergent design. It emphasizes the core of the process: continuously taking advantage of opportunities to improve our design. Continuous design's focus on simplicity and continuous improvement has made the code better and more maintainable over time, rather than less.},
	author = {Shore, J. },
	citeulike-article-id = {155588},
	journal = {Software, IEEE},
	keywords = {design, software},
	number = {1},
	pages = {20--22},
	posted-at = {2007-10-21 18:25:01},
	priority = {3},
	title = {Continuous design},
	url = {http://ieeexplore.ieee.org/xpls/abs\_all.jsp?arnumber=1259183},
	volume = {21},
	year = {2004}
}



@inproceedings{citeulike:1802017,
	abstract = {Design methods in information systems frequently create software descriptions using formal languages. Nonetheless, most software designers prefer to describe software using natural languages. This distinction is not simply a matter of convenience. Natural languages are not the same as formal languages; in particular, natural languages do not follow the notions of equivalence used by formal languages. In this paper, we show both the existence and coexistence of different notions of equivalence by extending the no-tion of oracles used in formal languages. This allows distinctions to be made between the trustworthy oracles assumed by formal languages and the untrustworthy oracles used by natural languages. By examining the notion of equivalence, we hope to encourage designers of software to rethink the place of ambiguity in software design.},
	author = {King, David   and Kimble, Chris  },
	booktitle = {Proceedings 9e colloque de l'AIM},
	citeulike-article-id = {1802017},
	keywords = {design, software},
	month = {May},
	posted-at = {2007-10-21 18:23:13},
	priority = {3},
	title = {Notions of Equivalence in Software Design},
	year = {2004}
}



@inproceedings{citeulike:1781774,
	abstract = {The revision history of a software system conveys important information about how and why the system evolved in time. The revision history can also tell us which parts of the system are coupled by common changes: "whenever the database schema was changed, the sqlquery() method was altered, too." This "evolutionary" coupling can be compared with the coupling as imposed by the system architecture; differences indicate anomalies which may be subject to restructuring. Our ROSE prototype analyzes fine-grained coupling between software entities as indicated by common changes. It turns out that common changes are a good indicator for modularity, that evolutionary coupling should be determined between syntactical entities (rather than files or modules), and that common changes can indicate coupling between software entities and nonprogram artifacts that is unavailable to the analysis of a single version.},
	author = {Zimmermann, T.  and Diehl, S.  and Zeller, A. },
	booktitle = {Software Evolution, 2003. Proceedings. Sixth International Workshop on Principles of},
	citeulike-article-id = {1781774},
	journal = {Software Evolution, 2003. Proceedings. Sixth International Workshop on Principles of},
	keywords = {architecture, evolution, software, software-architecture, software-engineering},
	pages = {73--83},
	posted-at = {2007-10-18 00:43:21},
	priority = {5},
	title = {How history justifies system architecture (or not)},
	url = {http://ieeexplore.ieee.org/xpls/abs\_all.jsp?arnumber=1231213},
	year = {2003}
}



@article{citeulike:1338277,
	abstract = {The invisible nature of software hides system complexity, particularly for large team-oriented projects. The authors have evolved four innovative visual representations of code to help solve this problem: line representation; pixel representation; file summary representation; and hierarchical representation. We first describe these four visual code representations and then discuss the interaction techniques for manipulating them. We illustrate our software visualization techniques through five case studies. The first three focus on software history and static software characteristics; the last two discuss execution behavior. The software library and its implementation are then described. Finally, we briefly review some related work and compare and contrast our different techniques for visualizing software},
	author = {Ball, T.  and Eick, S. G. },
	citeulike-article-id = {1338277},
	doi = {10.1109/2.488299},
	journal = {Computer},
	keywords = {architecture, code, code-analysis, software, software-architecture, software-engineering, version-history, view, visualization},
	number = {4},
	pages = {33--43},
	posted-at = {2007-10-16 20:15:05},
	priority = {0},
	title = {Software visualization in the large},
	url = {http://dx.doi.org/10.1109/2.488299},
	volume = {29},
	year = {1996}
}



@inproceedings{citeulike:1772013,
	abstract = {Architectural design decisions deserve to be first class entities in the process of developing complex software-intensive systems. Preserving the graphs of decisions and all their interdependencies will support the evolution and maintenance of such systems. In this paper we present a possible ontology of architectural design decisions, their attributes and relationships, for complex, software-intensive systems.},
	author = {Krutchen, Philippe  },
	booktitle = {2nd Groningen Workshop Software Variability},
	citeulike-article-id = {1772013},
	keywords = {architecture, decisions, notations, software, software-architecture, software-engineering},
	month = {October},
	pages = {54--61},
	posted-at = {2007-10-16 03:52:26},
	priority = {0},
	title = {An Ontology of Architectural Design Decisions in Software Intensive Systems},
	year = {2004}
}



@inproceedings{citeulike:1771983,
	author = {Lee, Larix   and Kruchten, Philippe  },
	booktitle = {Electrical and Computer Engineering, 2007. CCECE 2007. Canadian Conference on},
	citeulike-article-id = {1771983},
	journal = {Electrical and Computer Engineering, 2007. CCECE 2007. Canadian Conference on},
	keywords = {architecture, software, software-architecture, software-engineering},
	pages = {686--689},
	posted-at = {2007-10-16 03:42:40},
	priority = {5},
	title = {Capturing Software Architectural Design Decisions},
	url = {http://ieeexplore.ieee.org/xpls/abs\_all.jsp?arnumber=4232835},
	year = {2007}
}



@inproceedings{citeulike:1771093,
	address = {New York, NY, USA},
	author = {Soni, Dilip   and Nord, Robert  L.  and Hofmeister, Christine  },
	booktitle = {ICSE '95: Proceedings of the 17th international conference on Software engineering},
	citeulike-article-id = {1771093},
	doi = {10.1145/225014.225033},
	isbn = {0897917081},
	keywords = {architecture, software, software-architecture},
	pages = {196--207},
	posted-at = {2007-10-15 20:10:34},
	priority = {4},
	publisher = {ACM Press},
	title = {Software architecture in industrial applications},
	url = {http://portal.acm.org/citation.cfm?id=225033},
	year = {1995}
}



@inproceedings{citeulike:1750831,
	abstract = {Most approaches in reverse engineering literature generate a single view of a software system that restricts the scope of the reconstruction process. We propose an orchestrated set of techniques and a multi-view toolkit to reconstruct three views of a software system such as design, behavior, and structure. Scenarios are central in generating design and behavior views. The design view is reconstructed by transforming a number of scenarios into design diagrams using a novel scenario schema and generating an objectbase of actors and actions and their dependencies. The behavior view is represented by different sets of functions that implement different features of the software system corresponding to a set of feature-specific scenarios that are derived from the design view. Finally, the structure view is reconstructed using modules and interconnections that are resulted by growing the core functions related to the software features that are extracted during the behavior recovery. This orchestrated view reconstruction technique provides a more accurate and comprehensive means for reverse engineering of a software system than a single view reconstruction approach. As case studies we applied the proposed multi-view approach on two systems, Xfig drawing tool and Pine email system},
	author = {Sartipi, Kamran   and Dezhkam, Nima   and Safyallah, Hossein  },
	booktitle = {Reverse Engineering, 2006. WCRE '06. 13th Working Conference on},
	citeulike-article-id = {1750831},
	journal = {Reverse Engineering, 2006. WCRE '06. 13th Working Conference on},
	keywords = {architecture, reconstruction, reverse-engineering, software-architecture, software-engineering},
	pages = {61--70},
	posted-at = {2007-10-10 15:28:59},
	priority = {0},
	title = {An Orchestrated Multi-view Software Architecture Reconstruction Environment},
	url = {http://ieeexplore.ieee.org/xpls/abs\_all.jsp?arnumber=4023977},
	year = {2006}
}



@inproceedings{citeulike:1750823,
	abstract = {The association between the description of a concern (e.g., a feature) and the code that implements it is valuable information that can degrade as the code of a system evolves. We present a study of the evolution of the implementation of a concern in 33 versions of an open-source text editor. We represented the implementation of the concern using concern graphs, a model that was designed to be resilient to source code evolution. The study showed how the concern graph model supports tracking a concern's implementation in an evolving system, as well as inferring high-level past changes and assessing the stability of the concern's implementation},
	author = {Robillard, Martin  P. },
	booktitle = {Software Maintenance, 2006. ICSM '06. 22nd IEEE International Conference on},
	citeulike-article-id = {1750823},
	journal = {Software Maintenance, 2006. ICSM '06. 22nd IEEE International Conference on},
	keywords = {architecture, software-architecture, software-engineering, software-evolution},
	pages = {479--482},
	posted-at = {2007-10-10 15:27:41},
	priority = {5},
	title = {Tracking Concerns in Evolving Source Code: An Empirical Study},
	url = {http://ieeexplore.ieee.org/xpls/abs\_all.jsp?arnumber=4021376},
	year = {2006}
}



@inproceedings{citeulike:555102,
	abstract = {Studying how a software system has evolved over time is difficult, time consuming, and costly; existing techniques are often limited in their applicability, are hard to extend, and provide little support for coping with architectural change. The paper introduces an approach to studying software evolution that integrates the use of metrics, software visualization, and origin analysis, which is a set of techniques for reasoning about structural and architectural change. Our approach incorporates data from various statistical and metrics tools, and provides a query engine as well as a Web-based visualization and navigation interface. It aims to provide an extensible, integrated environment for aiding software maintainers in understanding the evolution of long-lived systems that have undergone significant architectural change. We use the evolution of GCC as an example to demonstrate the uses of various functionalities of BEAGLE, a prototype implementation of the proposed environment.},
	author = {Tu, Qiang   and Godfrey, M. W. },
	citeulike-article-id = {555102},
	journal = {Program Comprehension, 2002. Proceedings. 10th International Workshop on},
	keywords = {architecture, software-architecture, software-engineering, software-evolution},
	pages = {127--136},
	posted-at = {2007-10-10 15:23:43},
	priority = {0},
	title = {An integrated approach for studying architectural evolution},
	url = {http://ieeexplore.ieee.org/xpls/abs\_all.jsp?arnumber=1021334},
	year = {2002}
}



@article{citeulike:833512,
	abstract = {The 4+1 View Model organizes a description of a software architecture using five concurrent views, each of which addresses a specific set of concerns. Architects capture their design decisions in four views and use the fifth view to illustrate and validate them. The logical view describes the design's object model when an object-oriented design method is used. To design an application that is very data driven, you can use an alternative approach to develop some other form of logical view, such as an entity-relationship diagram. The process view describes the design's concurrency and synchronization aspects. The physical view describes the mapping of the software onto the hardware and reflects its distributed aspect. The development view describes the software's static organization in its development environment},
	author = {Kruchten, P. B. },
	citeulike-article-id = {833512},
	journal = {Software, IEEE},
	keywords = {architecture, notations, rup, software-architecture},
	number = {6},
	pages = {42--50},
	posted-at = {2007-10-10 01:37:23},
	priority = {0},
	title = {The 4+1 View Model of architecture},
	url = {http://ieeexplore.ieee.org/xpls/abs\_all.jsp?arnumber=469759},
	volume = {12},
	year = {1995}
}



@inproceedings{citeulike:1743255,
	address = {Washington, DC, USA},
	author = {Zimmermann, Thomas   and Weisgerber, Peter   and Diehl, Stephan   and Zeller, Andreas  },
	booktitle = {ICSE '04: Proceedings of the 26th International Conference on Software Engineering},
	citeulike-article-id = {1743255},
	keywords = {data-mining, software-engineering, software-evolution},
	pages = {563--572},
	posted-at = {2007-10-08 20:50:10},
	priority = {0},
	publisher = {IEEE Computer Society},
	title = {Mining Version Histories to Guide Software Changes},
	url = {http://portal.acm.org/citation.cfm?id=999460},
	year = {2004}
}



@inproceedings{citeulike:1743254,
	abstract = {The dependencies and interrelations between classes and modules affect the maintainability of object-oriented systems. It is therefore important to capture weaknesses of the software architecture to make necessary corrections. We describe a method for software evolution analysis. It consists of three complementary steps, which form an integrated approach for the reasoning about software structures based on historical data: 1) the quantitative analysis uses version information for the assessment of growth and change behavior; 2) the change sequence analysis identifies common change patterns across all system parts; and 3) the relation analysis compares classes based on CVS release history data and reveals the dependencies within the evolution of particular entities. We focus on the relation analysis and discuss its results; it has been validated based on empirical data collected from a concurrent versions system (CVS) covering 28 months of a picture archiving and communication system (PACS). Our software evolution analysis approach enabled us to detect shortcomings of PACS such as architectural weaknesses, poorly designed inheritance hierarchies, or blurred interfaces of modules.},
	author = {Gall, H.  and Jazayeri, M.  and Krajewski, J. },
	booktitle = {Software Evolution, 2003. Proceedings. Sixth International Workshop on Principles of},
	citeulike-article-id = {1743254},
	journal = {Software Evolution, 2003. Proceedings. Sixth International Workshop on Principles of},
	keywords = {cvs, data-mining, software-engineering, software-evolution},
	pages = {13--23},
	posted-at = {2007-10-08 20:49:24},
	priority = {0},
	title = {CVS release history data for detecting logical couplings},
	url = {http://ieeexplore.ieee.org/xpls/abs\_all.jsp?arnumber=1231205},
	year = {2003}
}



@article{citeulike:1743237,
	abstract = {This paper provides a definition of the term "software engineering" and a survey of the current state of the art and likely future trends in the field. The survey covers the technology available in the various phases of the software life cycle\&\#8212;requirements engineering, design, coding, test, and maintenance\&\#8212;and in the overall area of software management and integrated technology-management approaches. It is oriented primarily toward discussing the domain of applicability of techniques (where and when they work), rather than how they work in detail. To cover the latter, an extensive set of 104 references is provided.},
	author = {Boehm, B. W. },
	booktitle = {Transactions on Computers},
	citeulike-article-id = {1743237},
	journal = {Transactions on Computers},
	keywords = {software, software-engineering},
	number = {12},
	pages = {1226--1241},
	posted-at = {2007-10-08 20:42:00},
	priority = {4},
	title = {Software Engineering},
	url = {http://ieeexplore.ieee.org/xpls/abs\_all.jsp?arnumber=1674590},
	volume = {C-25},
	year = {1976}
}



@techreport{citeulike:1724801,
	abstract = {This report compares the Software Engineering Institute’s Views and Beyond approach for documenting software architectures with the documentation philosophy embodied in agile software-development methods. This report proposes an approach for capturing architecture information in a way that is consistent with agile methods.},
	author = {Clements, Paul   and Ivers, James   and Little, Reed   and Nord, Robert   and Stafford, Judith  },
	citeulike-article-id = {1724801},
	keywords = {agile, architecture, documentation, software, software-architecture, software-engineering},
	number = {CMU/SEI-2003-TN-023},
	posted-at = {2007-10-03 19:22:27},
	priority = {4},
	school = {Carnegie-Mellon University},
	title = {Documenting Software Architectures in an Agile World},
	url = {http://www.sei.cmu.edu/publications/documents/03.reports/03tn023.html}
}



@inproceedings{citeulike:658795,
	abstract = {The terms architecture, design, and implementation are typically used informally in partitioning software specifications into three coarse strata of abstraction. Yet these strata are not well-defined in either research or practice, causing miscommunication and needless debate. To remedy this problem we formalize the Intension and the Locality criteria, which imply that the distinction between architecture, design, and implementation is qualitative and not merely quantitative. We demonstrate that architectural styles are intensional and non-local; that design patterns are intensional and local; and that implementations are extensional and local.},
	author = {Eden, A. H.  and Kazman, R. },
	citeulike-article-id = {658795},
	journal = {Software Engineering, 2003. Proceedings. 25th International Conference on},
	keywords = {architecture, design, implementation, software-architecture, software-engineering},
	pages = {149--159},
	posted-at = {2007-10-03 16:03:57},
	priority = {5},
	title = {Architecture, design, implementation},
	url = {http://ieeexplore.ieee.org/xpls/abs\_all.jsp?arnumber=1201196},
	year = {2003}
}



@book{citeulike:1723773,
	author = {Sedgewick, Robert  },
	citeulike-article-id = {1723773},
	howpublished = {Paperback},
	isbn = {0201775786},
	keywords = {algorithms, data-structures, graph, java, programming},
	month = {July},
	posted-at = {2007-10-03 12:36:38},
	priority = {2},
	publisher = {{Addison-Wesley Professional}},
	title = {Bundle of Algorithms in Java, Third Edition (Parts 1-5): Fundamentals, Data Structures, Sorting, Searching, and Graph Algorithms, Third Edition},
	url = {http://www.amazon.ca/exec/obidos/redirect?tag=citeulike09-20\&amp;path=ASIN/0201775786},
	year = {2003}
}



@article{citeulike:142862,
	abstract = {Bridging the gap between requirements and the right technical solution involves a lot of "magic." Explicitly documenting major architecture decisions makes the architecture development process more structured and transparent. Additionally, it clarifies the architects' rationale for stakeholders, designers, and other architects. Architecture decisions are also a helpful addition to more traditional architecture approaches.},
	author = {Tyree, J.  and Akerman, A. },
	citeulike-article-id = {142862},
	doi = {10.1109/MS.2005.27},
	journal = {Software, IEEE},
	keywords = {architect, architecture, software, software-architecture, software-engineering},
	number = {2},
	pages = {19--27},
	posted-at = {2007-10-02 18:06:16},
	priority = {0},
	title = {Architecture Decisions: Demystifying Architecture},
	url = {http://dx.doi.org/10.1109/MS.2005.27},
	volume = {22},
	year = {2005}
}



@inproceedings{citeulike:1716956,
	address = {Washington, DC, USA},
	author = {Smolander, Kari  },
	booktitle = {ISESE '02: Proceedings of the 2002 International Symposium on Empirical Software Engineering},
	citeulike-article-id = {1716956},
	isbn = {076951796X},
	keywords = {architect, architecture, concepts, software, software-architecture, software-engineering},
	posted-at = {2007-10-01 21:09:21},
	priority = {0},
	publisher = {IEEE Computer Society},
	title = {Four Metaphors of Architecture in Software Organizations: Finding Out the Meaning of Architecture in Practice},
	url = {http://portal.acm.org/citation.cfm?id=857888},
	year = {2002}
}



@book{citeulike:224612,
	abstract = {{"Designing a large software system is an extremely complicated undertaking that requires juggling differing perspectives and differing goals, and evaluating differing options. Applied Software Architecture is the best book yet that gives guidance as to how to sort out and organize the conflicting pressures and produce a successful design." -- Len Bass, author of Software Architecture in Practice.  <P>Quality software architecture design has always been important, but in today's fast-paced, rapidly changing, and complex development environment, it is essential. A solid, well-thought-out design helps to manage complexity, to resolve trade-offs among conflicting requirements, and, in general, to bring quality software to market in a more timely fashion.  <P>Applied Software Architecture provides practical guidelines and techniques for producing quality software designs. It gives an overview of software architecture basics and a detailed guide to architecture design tasks, focusing on four fundamental views of architecture--conceptual, module, execution, and code. Through four real-life case studies, this book reveals the insights and best practices of the most skilled software architects in designing software architecture. These case studies, written with the masters who created them, demonstrate how the book's concepts and techniques are embodied in state-of-the-art architecture design. You will learn how to:  <P>* create designs flexible enough to incorporate tomorrow's technology; * use architecture as the basis for meeting performance, modifiability, reliability, and safety requirements; * determine priorities among conflicting requirements and arrive at a successful solution; and * use software architecture to help integrate system components.  <P>Anyone involved in software architecture will find this book a valuable compendium of best practices and an insightful look at the critical role of architecture in software development.}},
	author = {Hofmeister, Christine   and Nord, Robert   and Soni, Dilip  },
	citeulike-article-id = {224612},
	howpublished = {Hardcover},
	isbn = {0201325713},
	keywords = {architect, architecture, book, software, software-architecture},
	month = {November},
	posted-at = {2007-09-30 23:10:36},
	priority = {2},
	publisher = {{Addison-Wesley Professional}},
	title = {Applied Software Architecture},
	url = {http://www.amazon.ca/exec/obidos/redirect?tag=citeulike09-20\&amp;path=ASIN/0201325713},
	year = {1999}
}



@article{clements:psq,
	author = {Clements, P.  and Bass, L.  and Kazman, R.  and Abowd, G. },
	citeulike-article-id = {1712505},
	journal = {Proceedings of the Fifth International Conference on Software Quality},
	keywords = {analysis, architecture, software, software-architecture},
	posted-at = {2007-09-30 23:05:34},
	priority = {4},
	title = {{Predicting software quality by architecture-level evaluation}},
	url = {ftp://ftp.sei.cmu.edu/pub/sati/Papers\_and\_Abstracts/Predicting\_SW\_Qual\_by\_Arch\_Eval.ps}
}



@article{citeulike:1712217,
	abstract = {Software architectures shift the focus of developers from lines-of-code to coarser-grained architectural elements and their overall interconnection structure. Architecture description languages (ADLs) have been proposed as modeling notations to support architecture-based development. There is, however, little consensus in the research community on what is an ADL, what aspects of an architecture should be modeled in an ADL, and which of several possible ADLs is best suited for a particular problem. Furthermore, the distinction is rarely made between ADLs on one hand and formal specification, module interconnection, simulation and programming languages on the other. This paper attempts to provide an answer to these questions. It motivates and presents a definition and a classification framework for ADLs. The utility of the definition is demonstrated by using it to differentiate ADLs from other modeling notations. The framework is used to classify and compare several existing ADLs, enabling us, in the process, to identify key properties of ADLs. The comparison highlights areas where existing ADLs provide extensive support and those in which they are deficient, suggesting a research agenda for the future},
	author = {Medvidovic, N.  and Taylor, R. N. },
	booktitle = {Software Engineering, IEEE Transactions on},
	citeulike-article-id = {1712217},
	journal = {Software Engineering, IEEE Transactions on},
	keywords = {adl, architecture, architecture-description-languages, description, languages, software, software-architecture, software-engineering},
	number = {1},
	pages = {70--93},
	posted-at = {2007-09-30 21:12:05},
	priority = {4},
	title = {A classification and comparison framework for software architecture description languages},
	url = {http://ieeexplore.ieee.org/xpls/abs\_all.jsp?arnumber=825767},
	volume = {26},
	year = {2000}
}



@book{citeulike:1712178,
	author = {Bosch, Jan  },
	citeulike-article-id = {1712178},
	howpublished = {Paperback},
	isbn = {0201674947},
	keywords = {architect, architecture, book, software, software-architecture, software-engineering},
	month = {May},
	posted-at = {2007-09-30 20:52:34},
	priority = {2},
	publisher = {{Addison-Wesley Professional}},
	title = {Design and Use of Software Architectures},
	url = {http://www.amazon.ca/exec/obidos/redirect?tag=citeulike09-20\&amp;path=ASIN/0201674947},
	year = {2000}
}



@article{citeulike:1702469,
	abstract = {The purpose of the architecture evaluation of a software system is to analyze the architecture to identify potential risks and to verify that the quality requirements have been addressed in the design. This survey shows the state of the research at this moment, in this domain, by presenting and discussing eight of the most representative architecture analysis methods. The selection of the studied methods tries to cover as many particular views of objective reflections as possible to be derived from the general goal. The role of the discussion is to offer guidelines related to the use of the most suitable method for an architecture assessment process. We will concentrate on discovering similarities and differences between these eight available methods by making classifications, comparisons and appropriateness studies.},
	author = {Dobrica, L.  and Niemela, E. },
	booktitle = {Software Engineering, IEEE Transactions on},
	citeulike-article-id = {1702469},
	doi = {10.1109/TSE.2002.1019479},
	journal = {Software Engineering, IEEE Transactions on},
	keywords = {analysis, architect, architecture, software, software-architecture},
	number = {7},
	pages = {638--653},
	posted-at = {2007-09-27 19:24:56},
	priority = {3},
	title = {A survey on software architecture analysis methods},
	url = {http://dx.doi.org/10.1109/TSE.2002.1019479},
	volume = {28},
	year = {2002}
}



@book{citeulike:305879,
	abstract = {{The second of three books published by the Center for Environmental Structure to provide a "working alternative to our present ideas about architecture, building, and planning," <I>A Pattern Language</I> offers a practical language for building and planning based on natural considerations. The reader is given an overview of some 250 patterns that are the units of this language, each consisting of a design problem, discussion, illustration, and solution. By understanding recurrent design problems in our environment, readers can identify extant patterns in their own design projects and use these patterns to create a language of their own. Extraordinarily thorough, coherent, and accessible, this book has become a bible for homebuilders, contractors, and developers who care about creating healthy, high-level design.} {"Brilliant....Here's how to design or redesign any space you're living or working in--from metropolis to room. Consider what you want to happen in the space, and then page through this book.  Its radically conservative observations will spark, enhance, organize your best ideas, and a wondrous home, workplace, town will result"--San Francisco Chronicle. A handbook designed for the layman which aims to present a language which people can use to express themselves in their own communities or homes, and to better communicate with each other.}},
	author = {Alexander, Christopher   and Ishikawa, Sara   and Silverstein, Murray  },
	citeulike-article-id = {305879},
	howpublished = {Hardcover},
	isbn = {0195019199},
	keywords = {architect, architecture, patterns, software-architecture},
	month = {August},
	posted-at = {2007-09-27 14:35:48},
	priority = {2},
	publisher = {{Oxford University Press}},
	title = {A Pattern Language: Towns, Buildings, Construction (Center for Environmental Structure Series)},
	url = {http://www.amazon.ca/exec/obidos/redirect?tag=citeulike09-20\&amp;path=ASIN/0195019199},
	year = {1978}
}



@book{citeulike:260117,
	abstract = {{Kent Beck's <I>eXtreme Programming eXplained</I> provides an intriguing high-level overview of the author's Extreme Programming (XP) software development methodology. Written for IS managers, project leaders, or programmers, this guide provides a glimpse at the principles behind XP and its potential advantages for small- to mid-size software development teams.<p> The book intends to describe what XP is, its guiding principles, and how it works. Simply written, the book avoids case studies and concrete details in demonstrating the efficacy of XP. Instead, it demonstrates how XP relies on simplicity, unit testing, programming in pairs, communal ownership of code, and customer input on software to motivate code improvement during the development process. As the author notes, these principles are not new, but when they're combined their synergy fosters a new and arguably better way to build and maintain software. Throughout the book, the author presents and explains these principles, such as "rapid feedback" and "play to win," which form the basis of XP.<p> Generally speaking, XP changes the way programmers work. The book is good at delineating new roles for programmers and managers who Beck calls "coaches." The most striking characteristic of XP is that programmers work in pairs, and that testing is an intrinsic part of the coding process. In a later section, the author even shows where XP works and where it doesn't and offers suggestions for migrating teams and organizations over to the XP process. <p> In the afterword, the author recounts the experiences that led him to develop and refine XP, an insightful section that should inspire any organization to adopt XP. This book serves as a useful introduction to the philosophy and practice of XP for the manager or programmer who wants a potentially better way to build software. <I>--Richard Dragan</I><p> <B>Topics covered</B>: Extreme Programming (XP) software methodology, principles, XP team roles, facilities design, testing, refactoring, the XP software lifecycle, and adopting XP.} {Software development projects can be fun, productive, and even daring.  Yet they can consistently deliver value to a business and remain under control.  <P>Extreme Programming (XP) was conceived and developed to address the specific needs of software development conducted by small teams in the face of vague and changing requirements. This new lightweight methodology challenges many conventional tenets, including the long-held assumption that the cost of changing a piece of software necessarily rises dramatically over the course of time.  XP recognizes that projects have to work to achieve this reduction in cost and exploit the savings once they have been earned.  <P>Fundamentals of XP include:  <P>* Distinguishing between the decisions to be made by business interests and those to be made by project stakeholders. * Writing unit tests before programming and keeping all of the tests running at all times. * Integrating and testing the whole system-several times a day. * Producing all software in pairs, two programmers at one screen. * Starting projects with a simple design that constantly evolves to add needed flexibility and remove unneeded complexity. * Putting a minimal system into production quickly and growing it in whatever directions prove most valuable.  <P>Why is XP so controversial?  Some sacred cows don't make the cut in XP:  <P>* Don't force team members to specialize and become analysts, architects, programmers, testers, and integrators-every XP programmer participates in all of these critical activities every day. * Don't conduct complete up-front analysis and design-an XP project starts with a quick analysis of the entire system, and XP programmers continue to make analysis and design decisions throughout development. * Develop infrastructure and frameworks as you develop your application, not up-front-delivering business value is the heartbeat that drives XP projects. * Don't write and maintain implementation documentation-communication in XP projects occurs face-to-face, or through efficient tests and carefully written code.  <P>You may love XP or you may hate it, but Extreme Programming Explained will force you to take a fresh look at how you develop software.}},
	author = {Beck, Kent   and Andres, Cynthia  },
	citeulike-article-id = {260117},
	howpublished = {Paperback},
	isbn = {0321278658},
	keywords = {extreme-programming, programming, software-engineering, team, techniques, xp},
	month = {November},
	posted-at = {2007-09-27 14:34:26},
	priority = {2},
	publisher = {{Addison-Wesley Professional}},
	title = {Extreme Programming Explained : Embrace Change (2nd Edition)},
	url = {http://www.amazon.ca/exec/obidos/redirect?tag=citeulike09-20\&amp;path=ASIN/0321278658},
	year = {2004}
}



@book{citeulike:1700258,
	abstract = {{Fourteen years after it was first issued, C++ expert Jon Bentley reinvents a true classic with the second edition of his <I>Programming Pearls</I>. Completely revised and brought up to date with all new code examples in C and C++, this book remains an exceptional tutorial for learning to <I>think</I> like a programmer. <p> The "pearls" in question center not only on choosing the right algorithms (like binary searches, sorting techniques, or sparse arrays) but also on showing how to solve problems effectively. Each chapter frames a particular programming task--such as sorting numbers, creating anagrams, or counting the words in a block of text--many drawn from Bentley's experiences in his long career as a developer. The book traces the process of arriving at a fast, efficient, and accurate solution, along with code profiling to discover what works best. After refining the correct answer, each chapter enumerates programming principles that you can use on your own.<p> The author also challenges you to think like an engineer, and each chapter ends with about a dozen problems to get you thinking creatively about design issues. (Sidebars on such historical topics as the first computer solutions to computer chess, spell-checking, and even architectural design help create a perspective on successful problem solving and make for a truly educational and enjoyable tour of how to become a better programmer.) Bentley also asks the reader to think analytically about the world with "back of the envelope" estimation techniques drawn from engineering. Appendices list the algorithms and code rules covered in the book, plus some sample solutions.<p> Fans of the first edition of this title will be pleased to see this favorite computer text brought up to date for today's faster hardware. Whether you want to improve your command of algorithms or test your problem-solving skills, the new version of <I>Programming Pearl</I> is a challenging, instructive, and thoroughly entertaining resource. <I>--Richard Dragan</I><p> <B>Topics covered</B>: Programming and problem-solving tutorial, sorting algorithms, merge sort, bit vectors, binary searches, program correctness and testing, improving performance, engineering and problem-solving techniques, performance estimates, designing for safety, divide-and-conquer and scanning algorithms, tuning code, tips for more efficient memory usage, insertion sort, quicksort algorithms, sparse arrays, searching algorithms, binary search trees, heaps, priority queues, searching text, and generating random text.} {The first edition of Programming Pearls was one of the most influential books I read early in my career, and many of the insights I first encountered in that book stayed with me long after I read it. Jon has done a wonderful job of updating the material. I am very impressed at how fresh the new examples seem." -Steve McConnell  <P> When programmers list their favorite books, Jon Bentley's collection of programming pearls is commonly included among the classics. Just as natural pearls grow from grains of sand that irritate oysters, programming pearls have grown from real problems that have irritated real programmers. With origins beyond solid engineering, in the realm of insight and creativity, Bentley's pearls offer unique and clever solutions to those nagging problems. Illustrated by programs designed as much for fun as for instruction, the book is filled with lucid and witty descriptions of practical programming techniques and fundamental design principles. It is not at all surprising that Programming Pearls has been so highly valued by programmers at every level of experience.  <P> In this revision, the first in 14 years, Bentley has substantially updated his essays to reflect current programming methods and environments. In addition, there are three new essays on  * testing, debugging, and timing  * set representations * string problems   All the original programs have been rewritten, and an equal amount of new code has been generated. Implementations of all the programs, in C or C++, are now available on the Web.  <P> What remains the same in this new edition is Bentley's focus on the hard core of programming problems and his delivery of workable solutions to those problems. Whether you are new to Bentley's classic or are revisiting his work for some fresh insight, the book is sure to make your own list of favorites.}},
	author = {Bentley, Jon  },
	citeulike-article-id = {1700258},
	howpublished = {Paperback},
	isbn = {0201657880},
	keywords = {code, programming, techniques},
	month = {September},
	posted-at = {2007-09-27 14:33:32},
	priority = {0},
	publisher = {{Addison-Wesley Professional}},
	title = {Programming Pearls (2nd Edition)},
	url = {http://www.amazon.ca/exec/obidos/redirect?tag=citeulike09-20\&amp;path=ASIN/0201657880},
	year = {1999}
}



@book{citeulike:126678,
	abstract = {{<I>The</I> classic book on the human elements of software engineering. Software tools and development environments may have changed in the 21 years since the first edition of this book, but the peculiarly nonlinear economies of scale in collaborative work and the nature of individuals and groups has not changed an epsilon.  If you write code or depend upon those who do, get this book as soon as possible -- from Amazon.com Books, your library, or anyone else. You (and/or your colleagues) will be forever grateful. Very Highest Recommendation.}},
	author = {Brooks, Frederick  P. },
	citeulike-article-id = {126678},
	howpublished = {Paperback},
	isbn = {0201835959},
	keywords = {architect, communication, software-engineering},
	month = {August},
	posted-at = {2007-09-27 14:32:03},
	priority = {4},
	publisher = {{Addison-Wesley Professional}},
	title = {The Mythical Man-Month: Essays on Software Engineering, 20th  Anniversary Edition},
	url = {http://www.amazon.ca/exec/obidos/redirect?tag=citeulike09-20\&amp;path=ASIN/0201835959},
	year = {1995}
}



@book{citeulike:115158,
	abstract = {{<I>Design Patterns</I> is a modern classic in the literature of object-oriented development, offering timeless and elegant solutions to common problems in software design. It describes patterns for managing object creation, composing objects into larger structures, and coordinating control flow between objects. The book provides numerous examples where using composition rather than inheritance can improve the reusability and flexibility of code. Note, though, that it's not a tutorial but a catalog that you can use to find an object-oriented design pattern that's appropriate for the needs of your particular application--a selection for virtuoso programmers who appreciate (or require) consistent, well-engineered object-oriented designs.} {Now on CD, this internationally acclaimed bestseller is more valuable than ever! <P> Use the contents of the CD to create your own design documents and reusable components. The CD contains: 23 patterns you can cut and paste into your own design documents; sample code demonstrating pattern implementation; complete Design Patterns content in standard HTML format, with numerous hyperlinked cross-references; accessed through a standard web browser; Java-based dynamic search mechanism, enhancing online seach capabilities; graphical user environment, allowing ease of navigation. <P> First published in 1995, this landmark work on object-oriented software design presents a catalog of simple and succinct solutions to common design problems. Created by four experienced designers, the 23 patterns contained herein have become an essential resource for anyone developing reusable object-oriented software. In response to reader demand, the complete text and pattern catalog are now available on CD-ROM. This electronic version of <i>Design Patterns</i> enables programmers to install the book directly onto a computer or network for use as an online reference for creating reusable object-oriented software. <P> The authors first describe what patterns are and how they can help you in the design process. They then systematically name, explain, evaluate, and catalog recurring designs in object-oriented systems. All patterns are compiled from real-world examples and include code that demonstrates how they may be implemented in object-oriented programming languages such as C++ and Smalltalk. Readers who already own the book will want the CD to take advantage of its dynamic search mechanism and ready-to-install patterns.}},
	author = {Gamma, Erich   and Helm, Richard   and Johnson, Ralph   and Vlissides, John  },
	citeulike-article-id = {115158},
	howpublished = {Hardcover},
	isbn = {0201633612},
	keywords = {architecture, code, design, design-patterns, patterns, programming, software, software-architecture, systems, techniques},
	month = {January},
	posted-at = {2007-09-27 14:30:26},
	priority = {0},
	publisher = {{Addison-Wesley Professional}},
	title = {Design Patterns},
	url = {http://www.amazon.ca/exec/obidos/redirect?tag=citeulike09-20\&amp;path=ASIN/0201633612},
	year = {1995}
}

@book{citeulike:175025,
	author = {Knuth, Donald  E. },
	citeulike-article-id = {175025},
	howpublished = {Hardcover},
	isbn = {0201896850},
	keywords = {programming, sorting},
	month = {April},
	posted-at = {2008-07-01 20:58:20},
	priority = {4},
	publisher = {{Addison-Wesley Professional}},
	title = {Art of Computer Programming, Volume 3: Sorting and Searching (2nd Edition)},
	url = {http://www.amazon.ca/exec/obidos/redirect?tag=citeulike09-20\&amp;path=ASIN/0201896850},
	year = {1998}
}

@book{citeulike:663361,
	abstract = {The Rational Unified Process is a software engineering process developed and marketed originally by Rational Software, and now IBM. It is a disciplined approach to assigning and managing tasks and responsibilities in a development organization. The goal of this process is to produce, within a predictable schedule and budget, high-quality software that meets the needs of its end users. The Rational Unified Process captures many of the best practices in modern software development and presents them in a tailorable form that is suitable for a wide range of projects and organizations. The Rational Unified Process delivers these best practices to the project team online in a detailed, practical form. This book provides an introduction to the concepts, structure, contents, and motivation of the Rational Unified Process. Goals of This Book In this book, you will learn what the Rational Unified Process is and what it is not; master the vocabulary of the Rational Unified Process and understand its structure; develop an appreciation for the best practices that we have synthesized in this process; and understand how the Rational Unified Process can give you the guidance you need for your specific responsibility in a project.},
	author = {Kruchten, Philippe  },
	citeulike-article-id = {663361},
	howpublished = {Paperback},
	isbn = {0321197704},
	keywords = {rup, software, software-engineering, uml},
	month = {December},
	posted-at = {2007-09-27 14:29:59},
	priority = {1},
	publisher = {Addison-Wesley Professional},
	title = {The Rational Unified Process: An Introduction, Third Edition},
	url = {http://www.amazon.ca/exec/obidos/redirect?tag=citeulike09-20\&amp;path=ASIN/0321197704},
	year = {2003}
}



@book{citeulike:1700243,
	abstract = {{Unix ranks among the great engineering accomplishments of the last half of the twentieth century, and its heir--Linux--seems already imposing and still on its way to achieving its full potential. Eric S. Raymond argues in <I>The Art of UNIX Programming</I> that the excellence of Unix derives as much from the fact that it was (and continues to be) a community effort as from the fact that a lot of smart people have worked to design and build it. Raymond, best known as the author of the open-source manifesto <I>The Cathedral and the Bazaar</I>, says in his preface that this is a "why-to" book, rather than a "how-to" book. It aims to show new Unix programmers why they should work under the old "hacker ethic"--embracing the principles of good software design for its own sake and of code-sharing.  <p>  That said, a great deal of valuable practical information appears in this book. Very little of it is in the form of code; most of the practical material takes the form of case studies and discussions of aspects of Unix, all aimed at determining why particular design characteristics are good. In many cases, the people who did the work in the first place make guest appearances and explain their thinking--an invaluable resource. This book is for the deep-thinking software developer in Unix (and perhaps Linux in particular). It shows how to fit into the long and noble tradition, and how to make the software work <I>right</I>. <I>--David Wall</I><p>  <B>Topics covered</B>: Why Unix (the term being defined to include Linux) is the way it is, and the people who made it that way. Commentary from Ken Thompson, Steve Johnson, Brian Kernighan, and David Korn enables readers to understand the thought processes of the creators of Unix.}},
	author = {Raymond, Eric  S. },
	citeulike-article-id = {1700243},
	howpublished = {Paperback},
	isbn = {0131429019},
	keywords = {programming, unix},
	month = {September},
	posted-at = {2007-09-27 14:22:50},
	priority = {0},
	publisher = {{Addison-Wesley Professional}},
	title = {The Art of UNIX Programming},
	url = {http://www.amazon.ca/exec/obidos/redirect?tag=citeulike09-20\&amp;path=ASIN/0131429019},
	year = {2003}
}



@book{citeulike:1700240,
	abstract = {{Just as software development is an iterative process in which an application is never truly "done," the education of a developer should continue for years. You can use <I>Hardcore Java</I> as a guide to the transition from novice Java programmer to journeyman, or as a map to parts of the language you haven't explored (or explored adequately) in your development work to date. Because of those design goals, this book is something of a catch-all, covering about a dozen general topics ranging from exception-handling to nested classes (and interfaces!) and the reflection API. The coverage clearly derives from the author's "lessons learned" notes, and they're rich with information. If nothing in this book surprises you, you're probably very experienced with Java.<p>  In addition to this book's tutorial function, <I>Hardcore Java</I> puts forth and defends a number of opinions about the design and style of Java software. One example: After explaining how bit fields work--bit fields aren't widely used in Java programming, and their advantages may be interesting to some programmers--Robert Simmons points out that they're inherently limited in their ability to contain data, and that this can cause problems. This is the kind of design tradeoff that more advanced Java programmers have to consider, and Simmons does the Java community a service by showing programmers how to think critically about the capabilities of their language. <I>--David Wall</I><p>  <B>Topics covered</B>: Advanced Java topics, including final constants, collections, exception handling, and nested classes. There's a useful bit about getting customers to help you design the data models they need, and very extensive coverage of reflection.} {Java has quickly become one of the most important languages in programming, particularly for professional and enterprise-level projects. From its infancy as a language primarily used for web applets to its maturity through servlets, Enterprise JavaBeans, and database access, Java has become a complex and robust tool for today's developer.    <i>Hardcore Java</i> takes this language and breaks it apart, piece by piece, revealing the important secrets and tricks that will take you from a junior-level programmer to a seasoned and expert developer. You'll fly through the fundamentals and quickly find yourself learning about advanced memory management techniques, optimization and bytecode-level enhancements, and the techniques required to build lightning-fast GUIs. Throughout the book, you'll also master the art of writing and maintaining bulletproof and error-proof code, all while grasping the intricacies of the Java language.    <i>Hardcore Java</i> covers:<ul>  <li>Use of the final keyword to optimize and protect your Java classes.</li>  <li>Complete and thorough coverage of all types of nested classes, including how to optimize anonymous and inner classes.</li>  <li>Detailed discussion of immutable objects, including unique tips on when to use them (and when not to).</li>  <li>Elimination of bugs through exception-handling management.</li>  <li>In-depth studies of constants, including their impact on the Java memory model.</li>  <li>The most thorough discussion of reflection in print, moving far beyond other books' "Hello World" coverage.</li>  <li>Construction and use of dynamic proxies, in both Java Standard and Enterprise editions.</li>  <li>Expansive coverage of weak references, including usage patterns and their role in garbage collection and memory management.</li></ul>  <i>Hardcore Java</i> is an invaluable addition to every programmer's library, and even the most advanced developers will find themselves moving beyond their own conceptions into truly advanced applications of the language. Thousands of lines of code, heavily commented and easily runnable, illustrate each concept in the book. }},
	author = {Simmons, R. },
	citeulike-article-id = {1700240},
	howpublished = {Paperback},
	isbn = {0596005687},
	keywords = {java, programming},
	month = {January},
	posted-at = {2007-09-27 14:21:14},
	priority = {0},
	publisher = {{O'Reilly Media, Inc.}},
	title = {Hardcore Java},
	url = {http://www.amazon.ca/exec/obidos/redirect?tag=citeulike09-20\&amp;path=ASIN/0596005687},
	year = {2004}
}



@book{citeulike:200721,
	abstract = {{Programmers are craftspeople trained to use a certain set of tools (editors, object managers, version trackers) to generate a certain kind of product (programs) that will operate in some environment (operating systems on hardware assemblies). Like any other craft, computer programming has spawned a body of wisdom, most of which isn't taught at universities or in certification classes. Most programmers arrive at the so-called tricks of the trade over time, through independent experimentation. In <I>The Pragmatic Programmer</I>, Andrew Hunt and David Thomas codify many of the truths they've discovered during their respective careers as designers of software and writers of code.<p> Some of the authors' nuggets of pragmatism are concrete, and the path to their implementation is clear. They advise readers to learn one text editor, for example, and use it for everything. They also recommend the use of version-tracking software for even the smallest projects, and promote the merits of learning regular expression syntax and a text-manipulation language. Other (perhaps more valuable) advice is more light-hearted. In the debugging section, it is noted that, "if you see hoof prints think horses, not zebras." That is, suspect everything, but start looking for problems in the most obvious places. There are recommendations for making estimates of time and expense, and for integrating testing into the development process. You'll want a copy of <I>The Pragmatic Programmer</I> for two reasons: it displays your own accumulated wisdom more cleanly than you ever bothered to state it, and it introduces you to methods of work that you may not yet have considered. Working programmers will enjoy this book. <I>--David Wall</I><p> <B>Topics covered</B>: A useful approach to software design and construction that allows for efficient, profitable development of high-quality products. Elements of the approach include specification development, customer relations, team management, design practices, development tools, and testing procedures. This approach is presented with the help of anecdotes and technical problems.}},
	author = {Hunt, Andrew   and Thomas, David  },
	citeulike-article-id = {200721},
	howpublished = {Paperback},
	isbn = {020161622X},
	keywords = {programming, techniques},
	month = {October},
	posted-at = {2007-09-27 12:28:33},
	priority = {0},
	publisher = {{Addison-Wesley Professional}},
	title = {The Pragmatic Programmer: From Journeyman to Master},
	url = {http://www.amazon.ca/exec/obidos/redirect?tag=citeulike09-20\&amp;path=ASIN/020161622X},
	year = {1999}
}



@book{citeulike:1700030,
	abstract = {{<P>Today's architecting must handle systems of types unknown until very recently. New domains, including personal computers, intersatellite networks, health services, and joint service command and control are calling for new architectures-and for architects specializing in those domains. Since the original publication, of this bestselling text, these new and emerging fields have contributed architectural concepts and tools of their own to the relatively new formalism-and evolving profession-called Systems Architecting.  The Art of Systems Architecting, Second Edition restates and extends into the future the classical architecting paradigm, incorporating the most broadly applicable of these contributions. It remains the most innovative, insightful treatment available to the discipline, providing both the academic and the industrial communities with the up-to-date tools, concepts, and techniques needed to conceive and build complex systems.</P>}},
	author = {Maier, Mark  W.  and Rechtin, Eberhardt  },
	citeulike-article-id = {1700030},
	howpublished = {Hardcover},
	isbn = {0849304407},
	keywords = {definition, design, software-architecture, systems, theory},
	month = {June},
	posted-at = {2007-09-27 12:26:36},
	priority = {4},
	publisher = {CRC},
	title = {The Art of Systems Architecting, Second Edition},
	url = {http://www.amazon.ca/exec/obidos/redirect?tag=citeulike09-20\&amp;path=ASIN/0849304407},
	year = {2000}
}



@book{citeulike:305936,
	abstract = {{Twenty years after it topped the bestseller charts, Douglas R. Hofstadter's <I>G\&ouml;del, Escher, Bach: An Eternal Golden Braid</I> is still something of a marvel. Besides being a profound and entertaining meditation on human thought and creativity, this book looks at the surprising points of contact between the music of Bach, the artwork of Escher, and the mathematics of G\&ouml;del. It also looks at the prospects for computers and artificial intelligence (AI) for mimicking human thought. For the general reader and the computer techie alike, this book still sets a standard for thinking about the future of computers and their relation to the way we think.<p> Hofstadter's great achievement in <I>G\&ouml;del, Escher, Bach</I> was making abstruse mathematical topics (like undecidability, recursion, and 'strange loops') accessible and remarkably entertaining. Borrowing a page from Lewis Carroll (who might well have been a fan of this book), each chapter presents dialogue between the Tortoise and Achilles, as well as other characters who dramatize concepts discussed later in more detail. Allusions to Bach's music (centering on his <I>Musical Offering</I>) and Escher's continually paradoxical artwork are plentiful here. This more approachable material lets the author delve into serious number theory (concentrating on the ramifications of G\&ouml;del's Theorem of Incompleteness) while stopping along the way to ponder the work of a host of other mathematicians, artists, and thinkers.<p> The world has moved on since 1979, of course. The book predicted that computers probably won't ever beat humans in chess, though Deep Blue beat Garry Kasparov in 1997. And the vinyl record, which serves for some of Hofstadter's best analogies, is now left to collectors. Sections on recursion and the graphs of certain functions from physics look tantalizing, like the fractals of recent chaos theory. And AI has moved on, of course, with mixed results. Yet <I>G\&ouml;del, Escher, Bach</I> remains a remarkable achievement. Its intellectual range and ability to let us visualize difficult mathematical concepts help make it one of this century's best for anyone who's interested in computers and their potential for <I>real</I> intelligence. <I>--Richard Dragan</I><p> <B>Topics Covered</B>: J.S. Bach, M.C. Escher, Kurt G\&ouml;del: biographical information and work, artificial intelligence (AI) history and theories, strange loops and tangled hierarchies, formal and informal systems, number theory, form in mathematics, figure and ground, consistency, completeness, Euclidean and non-Euclidean geometry, recursive structures, theories of meaning, propositional calculus, typographical number theory, Zen and mathematics, levels of description and computers; theory of mind: neurons, minds and thoughts; undecidability; self-reference and self-representation; Turing test for machine intelligence.} {Winner of the Pulitzer Prize, this book applies Godel's seminal contribution to modern mathematics to the study of the human mind and the development of artificial intelligence.}},
	author = {Hofstadter, Douglas  R. },
	citeulike-article-id = {305936},
	howpublished = {Paperback},
	isbn = {0465026567},
	keywords = {artificial-intelligence, bach, escher, godel, music, recursivity, theory-of-computation},
	month = {January},
	posted-at = {2007-09-27 12:25:10},
	priority = {0},
	publisher = {{Basic Books}},
	title = {G\"{o}del, Escher, Bach: An Eternal Golden Braid},
	url = {http://www.amazon.ca/exec/obidos/redirect?tag=citeulike09-20\&amp;path=ASIN/0465026567},
	year = {1999}
}

@book{citeulike:205322,
	author = {{McConnell, Steve }},
	citeulike-article-id = {205322},
	howpublished = {Paperback},
	isbn = {0735619670},
	keywords = {programming, software, software-engineering},
	month = {June},
	posted-at = {2008-08-29 19:54:26},
	priority = {3},
	publisher = {{Microsoft Press}},
	title = {Code Complete, Second Edition},
	url = {http://www.amazon.ca/exec/obidos/redirect?tag=citeulike09-20\&amp;path=ASIN/0735619670},
	year = {2004}
}


@book{citeulike:115154,
	abstract = {{<I>Pattern-Oriented Software Architecture: A System of Patterns</I> looks at how patterns occur on three different levels--in software architecture, in everyday design, and in idioms (which describe how a particular design pattern is implemented in a programming language like C++). This synthetic approach is a little theoretical at times, but the authors also present over a dozen patterns and provide real-world examples wherever possible.<p>  For architectural patterns, the authors look at the Layers pattern, used in operating systems such as Windows NT and virtual machines. They also consider Pipes and Filters, which process streams of data. (This pattern, the authors point out, is a lynchpin of Unix.) Their Blackboard pattern shows how a complex problem, such as image or speech recognition can be broken up into smaller, specialized subsystems that work together to solve a problem. (For recognizing words from a raw waveform input, a Blackboard approach might have separate processes to find phonemes, then words, then sentences.)<p> This book also looks at today's distributed systems in considering the Broker pattern, which is used on the Internet and in Microsoft's OLE technology.  This section also presents several powerful patterns for building effective graphical user interfaces, such as Model-View-Controller.<p>  The authors define several well-known design patterns, such as the Proxy and Command patterns, and also basic, far-reaching patterns, such as Whole-Part and Master-Slave, which are widely used throughout computing. Their survey ends with a discussion on the way objects can communicate (using such patterns as Forwarder-Receiver, Client-Dispatcher-Server, and Publisher-Subscriber), which many developers will recognize as familiar patterns, but are codified here as "official" patterns. The book then discusses some idioms in C++ and a more far-reaching role for patterns in software design and architecture.  By fitting patterns into traditional software engineering practices, the authors of <I>Pattern-Oriented Software Architecture</I> successfully argue that the role for patterns will only continue to diversify and enrich tomorrow's software engineering tools and methodologies. <I>--Richard Dragan</I>} {Pattern - Oriented Software Architecture A System of Patterns Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, Michael Stal of Siemens AG, Germany Pattern-oriented software architecture is a new approach to software development. This book represents the progression and evolution of the pattern approach into a system of patterns capable of describing and documenting large-scale applications. A pattern system provides, on one level, a pool of proven solutions to many recurring design problems. On another it shows how to combine individual patterns into heterogeneous structures and as such it can be used to facilitate a constructive development of software systems. Uniquely, the patterns that are presented in this book span several levels of abstraction, from high-level architectural patterns and medium-level design patterns to low-level idioms. The intention of, and motivation for, this book is to support both novices and experts in software development. Novices will gain from the experience inherent in pattern descriptions and experts will hopefully make use of, add to, extend and modify patterns to tailor them to their own needs. None of the pattern descriptions are cast in stone and, just as they are borne from experience, it is expected that further use will feed in and refine individual patterns and produce an evolving system of patterns. Visit our Web Page http://www.wiley.com/compbooks/}},
	author = {Buschmann, Frank   and Meunier, Regine   and Rohnert, Hans   and Sommerlad, Peter   and Stal, Michael   and Sommerlad, Peter   and Stal, Michael  },
	citeulike-article-id = {115154},
	howpublished = {Hardcover},
	isbn = {0471958697},
	keywords = {concepts, definition, design, patterns, software, software-architecture, theory},
	month = {August},
	posted-at = {2007-09-27 12:18:09},
	priority = {0},
	publisher = {{John Wiley \& Sons}},
	title = {Pattern-Oriented Software Architecture, Volume 1: A System of Patterns},
	url = {http://www.amazon.ca/exec/obidos/redirect?tag=citeulike09-20\&amp;path=ASIN/0471958697},
	year = {1996}
}

@book{citeulike:453462,
	abstract = {{"Requirements" are essential for creating successful software because they let users and developers agree on what features will be delivered in new systems. Karl Wiegers's <I>Software Requirements</I> shows you how to define and get more out of software requirements with dozens of "best practices" and tips that make this book a valuable resource for both software project managers and developers.<p> The book's commonsense approach provides exemplary project management skills tailored to gathering (and refining, implementing, and eventually tracking) software requirements. While the book often cites recent software engineering studies, the focus always returns to practical management techniques. A case study for a chemical tracking application frames the book, and most chapters begin with anecdotes that demonstrate situations in which users and developers misunderstand each other about a software project's ultimate goals. (If you've ever worked in the field, these stories will probably sound all too familiar.)<p> This book offers hope, though, for improving your software design process, with dozens of tips on getting better design input from your customers and then using these requirements to generate a variety of design documents. There are numerous templates and sample documents too--a big help for the busy software manager.<p> Several standout sections cover negotiating difficult steps in the process, particularly how to manage shifting requirements as projects move forward and keep the various users and stakeholders content throughout the software process. Late in the book, the author surveys today's software management tools and shows how to pick the right ones for your organization.<p> Anchored by the author's considerable experience and software engineering expertise, this jargon-free and practical guide to software requirements can definitely give you the edge in managing software projects more efficiently. <I>--Richard Dragan</I><p> <B>Topics covered</B>: software requirements specifications (SRS); business and user requirements; risk management; the requirements process; sample documents and templates; requirements development: elicitation, analysis, specification, and verification; rights and responsibilities for software customers; best practices; project management tips; process assessment and improvement; types of users; product champions; use cases and other diagrams; tips for prototyping; managing requirements change; change centered boards (CCBs); evaluating and using requirements tools; requirements traceability matrix; impact analysis.} {Learn proven, real-world techniques for managing the software requirements engineering process. This award-winning book has been expanded with new topics, including use cases, up-to-date tools, more field examples, and a new troubleshooting guide.}},
	author = {Wiegers, Karl  E. },
	citeulike-article-id = {453462},
	howpublished = {Paperback},
	isbn = {0735618798},
	keywords = {requirements, software, software-engineering},
	month = {February},
	posted-at = {2008-06-06 13:05:45},
	priority = {3},
	publisher = {{Microsoft Press}},
	title = {Software Requirements, Second Edition},
	url = {http://www.amazon.ca/exec/obidos/redirect?tag=citeulike09-20\&amp;path=ASIN/0735618798},
	year = {2003}
}

@book{citeulike:115152,
	author = {Hohmann, Luke  },
	citeulike-article-id = {115152},
	howpublished = {Paperback},
	isbn = {0201775948},
	keywords = {architecture, business, software, software-architecture},
	month = {January},
	posted-at = {2007-09-27 12:12:35},
	priority = {0},
	publisher = {{Addison-Wesley Professional}},
	title = {Beyond Software Architecture: Creating and Sustaining Winning Solutions},
	url = {http://www.amazon.ca/exec/obidos/redirect?tag=citeulike09-20\&amp;path=ASIN/0201775948},
	year = {2003}
}



@inproceedings{citeulike:494299,
	address = {New York, NY, USA},
	author = {Medvidovic, Nenad  },
	booktitle = {SEKE '02: Proceedings of the 14th international conference on Software engineering and knowledge engineering},
	citeulike-article-id = {494299},
	doi = {10.1145/568760.568814},
	isbn = {1581135564},
	keywords = {architecture, software-architecture},
	pages = {299--306},
	posted-at = {2007-09-27 00:38:33},
	priority = {5},
	publisher = {ACM Press},
	title = {On the role of middleware in architecture-based software development},
	url = {http://portal.acm.org/citation.cfm?id=568814},
	year = {2002}
}



@book{citeulike:171824,
	author = {Van Doren, Charles  V.  and Adler, Mortimer  J. },
	citeulike-article-id = {171824},
	howpublished = {Paperback},
	isbn = {0671212095},
	keywords = {book, read},
	month = {August},
	posted-at = {2007-09-27 00:33:50},
	priority = {4},
	publisher = {Touchstone},
	title = {How to Read a Book},
	url = {http://www.amazon.ca/exec/obidos/redirect?tag=citeulike09-20\&amp;path=ASIN/0671212095},
	year = {1972}
}



@article{citeulike:1697891,
	abstract = {The author examines the state of computer science education and discusses the trend whereby computer science graduates are ending up in engineering jobs. He questions whether this back door to engineering is in the best interests of the students, their employers, and society. He argues that computer science programs must return to a classical engineering approach that emphasizes fundamentals},
	author = {Parnas, D. L. },
	booktitle = {Computer},
	citeulike-article-id = {1697891},
	journal = {Computer},
	keywords = {computer-science, education},
	number = {1},
	pages = {17--22},
	posted-at = {2007-09-26 19:00:33},
	priority = {4},
	title = {Education for computing professionals},
	url = {http://ieeexplore.ieee.org/xpls/abs\_all.jsp?arnumber=48796},
	volume = {23},
	year = {1990}
}



@article{citeulike:356159,
	abstract = {A central feature of the evolution of large software systems is that change-which is necessary to add new functionality, accommodate new hardware, and repair faults-becomes increasingly difficult over time. We approach this phenomenon, which we term code decay, scientifically and statistically. We define code decay and propose a number of measurements (code decay indices) on software and on the organizations that produce it, that serve as symptoms, risk factors, and predictors of decay. Using an unusually rich data set (the fifteen-plus year change history of the millions of lines of software for a telephone switching system), we find mixed, but on the whole persuasive, statistical evidence of code decay, which is corroborated by developers of the code. Suggestive indications that perfective maintenance can retard code decay are also discussed},
	author = {Eick, S. G.  and Graves, T. L.  and Karr, A. F.  and Marron, J. S.  and Mockus, A. },
	citeulike-article-id = {356159},
	journal = {Software Engineering, IEEE Transactions on},
	keywords = {aging, architecture, code, decay, software, software-architecture, software-evolution, systems},
	number = {1},
	pages = {1--12},
	posted-at = {2007-09-26 14:53:14},
	priority = {0},
	title = {Does code decay? Assessing the evidence from change management data},
	url = {http://ieeexplore.ieee.org/xpls/abs\_all.jsp?arnumber=895984},
	volume = {27},
	year = {2001}
}



@inproceedings{citeulike:1697323,
	address = {Los Alamitos, CA, USA},
	author = {Parnas, David  L. },
	booktitle = {ICSE '94: Proceedings of the 16th international conference on Software engineering},
	citeulike-article-id = {1697323},
	doi = {10.1016/0164-1212(87)90025-2},
	isbn = {081865855X},
	keywords = {aging, software, software-architecture, software-evolution},
	pages = {279--287},
	posted-at = {2007-09-26 14:46:42},
	priority = {0},
	publisher = {IEEE Computer Society Press},
	title = {Software aging},
	url = {http://portal.acm.org/citation.cfm?id=257734.257788},
	year = {1994}
}



@article{citeulike:1695641,
	author = {Fowler, M. },
	booktitle = {Software, IEEE},
	citeulike-article-id = {1695641},
	journal = {Software, IEEE},
	keywords = {architect, software-architecture},
	number = {5},
	pages = {11--13},
	posted-at = {2007-09-26 01:43:00},
	priority = {0},
	title = {Design - Who Needs an Architect?},
	url = {http://ieeexplore.ieee.org/xpls/abs\_all.jsp?arnumber=1231144},
	volume = {20},
	year = {2003}
}



@article{kruchten2saa,
	author = {Kruchten, P. },
	citeulike-article-id = {1695635},
	journal = {Software Architecture; TC2 First Working IFIP Conference on Software Architecture (WICSA1)},
	keywords = {architect, software-architecture, team},
	pages = {565--583},
	posted-at = {2007-09-26 01:39:34},
	priority = {0},
	title = {{The Software Architect -- and The Software Architecture Team}},
	volume = {2}
}



@article{citeulike:579517,
	abstract = {It's been 10 years since David Garlan and Mary Shaw wrote their seminal book Software Architecture Perspective on an Emerging Discipline, since Maarten Boasson edited a special issue of IEEE Software on software architecture, and since the first International Software Architecture Workshop took place. What has happened over these 10 years? What have we learned? Where do we look for information? What's the community around this discipline? And where are we going from here?This article is part of a focus section on software architecture.},
	author = {Kruchten, P.  and Obbink, H.  and Stafford, J. },
	citeulike-article-id = {579517},
	doi = {10.1109/MS.2006.59},
	journal = {Software, IEEE},
	keywords = {software, software-architecture},
	number = {2},
	pages = {22--30},
	posted-at = {2007-09-25 19:51:13},
	priority = {5},
	title = {The Past, Present, and Future for Software Architecture},
	url = {http://dx.doi.org/10.1109/MS.2006.59},
	volume = {23},
	year = {2006}
}



@techreport{citeulike:381858,
	address = {Pittsburgh, PA, USA},
	author = {Garlan, David   and Shaw, Mary  },
	citeulike-article-id = {381858},
	keywords = {concepts, definition, design, introduction, software, software-architecture, theory},
	posted-at = {2007-09-25 18:36:30},
	priority = {5},
	publisher = {Carnegie Mellon University},
	title = {An Introduction to Software Architecture},
	url = {http://portal.acm.org/citation.cfm?id=865128},
	year = {1994}
}



@book{citeulike:1693643,
	address = {Boston, MA, USA},
	author = {Bass, Len   and Clements, Paul   and Kazman, Rick  },
	citeulike-article-id = {1693643},
	isbn = {0201199300},
	keywords = {concepts, software, software-architecture, theory},
	posted-at = {2007-09-25 18:18:50},
	priority = {5},
	publisher = {Addison-Wesley Longman Publishing Co., Inc.},
	title = {Software Architecture in Practice},
	url = {http://portal.acm.org/citation.cfm?id=274860},
	year = {1998}
}



@inproceedings{citeulike:299872,
	address = {New York, NY, USA},
	author = {Garlan, David  },
	booktitle = {ICSE '00: Proceedings of the Conference on The Future of Software Engineering},
	citeulike-article-id = {299872},
	doi = {10.1145/336512.336537},
	isbn = {1581132530},
	keywords = {concepts, software-architecture, theory},
	pages = {91--101},
	posted-at = {2007-09-25 18:15:28},
	priority = {0},
	publisher = {ACM Press},
	title = {Software architecture: a roadmap},
	url = {http://portal.acm.org/citation.cfm?id=336537},
	year = {2000}
}



@article{citeulike:2960,
	abstract = {The purpose of this paper is to build the foundation for software architecture. We first develop an intuition for software architecture by appealing to several well-established architectural disciplines. On the basis of this intuition, we present a model of software architecture that consists of three components: elements, form, and rationale. Elements are either processing, data, or connecting elements. Form is defined in terms of the properties of, and the relationships among, the elements --- that is, the constraints on the elements. The rationale provides the underlying basis for the architecture in terms of the system constraints, which most often derive from the system requirements. We discuss the components of the model in the context of both architectures and architectural styles and present an extended example to illustrate some important architecture and style considerations. We conclude by presenting some of the benefits of our approach to software architecture, summarizing our contributions, and relating our approach to other current work.},
	author = {Perry, Dewayne  E.  and Wolf, Alexander  L. },
	citeulike-article-id = {2960},
	doi = {10.1145/141874.141884},
	issn = {0163-5948},
	journal = {SIGSOFT Software Engineering Notes},
	keywords = {concepts, definition, software, software-architecture},
	month = {October},
	number = {4},
	pages = {40--52},
	posted-at = {2007-09-25 18:11:56},
	priority = {5},
	publisher = {ACM Press},
	title = {{Foundations for The Study of Software Architecture}},
	url = {http://portal.acm.org/citation.cfm?id=141884},
	volume = {17},
	year = {1992}
}



@article{citeulike:1693464,
	address = {Upper Saddle River, NJ, USA},
	author = {Parnas, D. L. },
	citeulike-article-id = {1693464},
	isbn = {0917072146},
	journal = {Classics in Software Engineering},
	keywords = {criteria, design, information-hiding, modules},
	pages = {139--150},
	posted-at = {2007-09-25 18:02:41},
	priority = {0},
	publisher = {Yourdon Press},
	title = {On the criteria to be used in decomposing systems into modules},
	url = {http://portal.acm.org/citation.cfm?id=1241515.1241527},
	year = {1979}
}



@article{citeulike:1693458,
	abstract = {Design problems, processes, and methods are topics of longstanding interest in fields such as architecture and engineering. Design tasks are also common in domains addressed by systems and management scientists. However, much scientific work in these fields indicates little awareness of design theories and research. This paper introduces systems and management scientists to the extensive design theory literature. More importantly, it consolidates and extends that literature by developing a deep conceptual analysis of design problems and problem solving. The analysis is built around five elements of design problems: goals, constraints, alternatives, representations, and solutions. These elements define the basic tasks or functional demands posed by design problem solving. The paper also identifies special difficulties faced by designers in systems and management science domains},
	author = {Smith, G. F.  and Browne, G. J. },
	booktitle = {Systems, Man and Cybernetics, IEEE Transactions on},
	citeulike-article-id = {1693458},
	journal = {Systems, Man and Cybernetics, IEEE Transactions on},
	keywords = {concepts, design, theory},
	number = {5},
	pages = {1209--1219},
	posted-at = {2007-09-25 17:58:31},
	priority = {0},
	title = {{Conceptual Foundations of Design Problem Solving}},
	url = {http://ieeexplore.ieee.org/xpls/abs\_all.jsp?arnumber=260655},
	volume = {23},
	year = {1993}
}



@misc{Occam,
  citeulike-article-id = {1667583},
   keywords = {bibtex-import},
   author = "Wikipedia",
   title = "Occam's Razor -- {W}ikipedia{,} The Free Encyclopedia",
   year = "2008",
   url = "\url{http://en.wikipedia.org/wiki/Occams\_Razor}",
   note = "[Online; accessed 2-September-2008]",
   priority = {0},

 }

@misc{mergesort,
   keywords = {algorithm},
   author = "Wikipedia",
   title = {{Merge Sort -- Wikipedia, The Free Encyclopedia}},
   year = "2008",
   url = "\url{http://en.wikipedia.org/wiki/Merge_sort}",
   note = "[Online; accessed 2-September-2008]",
   priority = {0},

 }



@article{yourdon1995ges,
	author = {Yourdon, E. },
	citeulike-article-id = {1667582},
	journal = {Software, IEEE},
	keywords = {bibtex-import},
	number = {3},
	pages = {79--81},
	pdf = {00382191.pdf},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	title = {{When good enough software is best}},
	volume = {12},
	year = {1995}
}



@misc{XML,
	author = {{world}},
	citeulike-article-id = {1667581},
	howpublished = {http://www.w3.org/XML/},
	keywords = {bibtex-import},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	title = {{Extensible Markup Language (XML)}},
	url = {http://www.w3.org/XML/},
	year = {2007}
}



@inproceedings{Westergaard2006B,
	abstract = {This paper describes the BRITNeY suite, a tool which enables users to create visualizations of formal models. BRITNeY suite is integrated with CPN Tools, and we give an example of how to extend a simple stop-and-wait protocol with a visualization in the form of message sequence charts. We also show examples of animations created during industrial projects to give an impression of what is possible with the BRITNeY suite.},
	address = {Turku, Finland},
	author = {Westergaard, Michael   and Lassen, Kristian  B. },
	booktitle = {Proceedings of 27th International Conference on Application and Theory of Petri Nets},
	citeulike-article-id = {1667580},
	keywords = {bibtex-import},
	month = {June},
	pdf = {animation.britney.pdf},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	title = {{The BRITNeY Suite Animation Tool}},
	url = {http://klafbang.eu/personlig/publications/animation.pdf},
	year = {2006}
}



@inproceedings{Westergaard06,
	abstract = {This paper describes a platform, the BRITNeY Suite, for experimenting with Coloured Petri nets. The BRITNeY Suite provides access to data-structures and a simulator for Coloured Petri nets via a powerful scripting language and plug-in-mechanism, thereby making it easy to perform customized simulations and visualizations of Coloured Petri net models. Additionally it is possible to make elaborate extensions building on top of well-designed interfaces to Coloured Petri nets created using CPN Tools.},
	address = {\r{A}rhus, Denmark},
	author = {Westergaard, Michael  },
	booktitle = {Proceedings of Seventh Workshop on Practical Use of Coloured Petri Nets and the CPN Tools},
	citeulike-article-id = {1667579},
	keywords = {bibtex-import},
	month = {October},
	pdf = {platform.britney.pdf},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	title = {{The BRITNeY Suite: A Platform for Experiments}},
	url = {http://klafbang.eu/personlig/publications/platform.pdf},
	year = {2006}
}



@misc{britneyHome,
	author = {Westergaard, Michael  },
	citeulike-article-id = {1667578},
	comment = {(private-note)http://wiki.daimi.au.dk/britney/\_home.wiki},
	howpublished = {Home Page},
	keywords = {bibtex-import},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	title = {{BRITNeY Suite - Basic Real-time Interactive Tool for Net-based animation}},
	url = {http://wiki.daimi.au.dk/britney/\_home.wiki}
}



@article{wegner2003cbt,
	author = {Wegner, P.  and Goldin, D. },
	citeulike-article-id = {1667577},
	journal = {Communications of the ACM},
	keywords = {bibtex-import},
	number = {4},
	pages = {100--102},
	pdf = {p100-wegner.pdf},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	publisher = {ACM Press New York, NY, USA},
	title = {{Computation beyond turing machines}},
	volume = {46},
	year = {2003}
}



@article{wegner1993map,
	author = {Wegner, P. },
	citeulike-article-id = {1667576},
	journal = {Proceedings of the Workshop on Object-Based Distributed Programming},
	keywords = {bibtex-import},
	pages = {1--32},
	pdf = {oot1.pdf},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	publisher = {Springer-Verlag London, UK},
	title = {{Models and Paradigms of Interaction}},
	year = {1993}
}



@article{wegner1997imp,
	author = {Wegner, P. },
	citeulike-article-id = {1667575},
	journal = {Communications of the ACM},
	keywords = {bibtex-import},
	number = {5},
	pages = {80--91},
	pdf = {p80-wegner.pdf},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	publisher = {ACM Press New York, NY, USA},
	title = {{Why interaction is more powerful than algorithms}},
	volume = {40},
	year = {1997}
}



@misc{Walling2007,
	author = {Walling, Rob  },
	citeulike-article-id = {1667574},
	howpublished = {http://www.softwarebyrob.com/archive/2007/02/04/User\_Interface\_Design\_ Complexity\_versus\_Flexibility.aspx},
	keywords = {bibtex-import},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	title = {User Interface Design: Complexity vs. Flexibility},
	url = {http://www.softwarebyrob.com/archive/2007/02/04/User\_Interface\_Design\_Complexity\_versus\_Flexibility.aspx}
}



@inproceedings{Waldo2006,
	abstract = {In this essay, I consider some of the factors that are making it more and more difficult to expend the effort necessary to do system design. Because of changes in the economics of the field in both industry and research, we have become less able to take the time needed to do real system design, and to train the next generation of designers. Because of the intellectual property landscape, we are less able to discuss system design. The end result is that we do less good system design than we used to, at least in those environments where system design used to be most common. But there are reasons to be optimistic about the future of system design, which appears to be happening in non-traditional ways and in nontraditional venues.},
	address = {New York, NY, USA},
	author = {Waldo, Jim  },
	booktitle = {OOPSLA '06: Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications},
	citeulike-article-id = {1667573},
	doi = {http://doi.acm.org/10.1145/1167473.1167513},
	keywords = {bibtex-import},
	pages = {467--480},
	pdf = {p467-waldo.pdf},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	publisher = {ACM Press},
	title = {On system design},
	year = {2006}
}



@article{thain2005dcp,
	author = {Thain, D.  and Tannenbaum, T.  and Livny, M. },
	citeulike-article-id = {1667572},
	journal = {Concurrency and Computation: Practice \& Experience},
	keywords = {bibtex-import},
	number = {2},
	pages = {323--356},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	title = {{Distributed Computing in Practice: The Condor Experience}},
	volume = {17},
	year = {2005}
}



@article{sutter2005sac,
	abstract = {Concurrency has long been touted as the “next big thing” and “the way of the future,” but for the past 30 years, mainstream software development has been able to ignore it. Our parallel future has finally arrived: new machines will be parallel machines, and this will require major changes in the way we develop software. The introductory article in this issue (“The Future of Microprocessors” by Kunle Olukotun and Lance Hammond) describes the hardware imperatives behind this shift in computer architecture from uniprocessors to multicore processors, also known as CMPs (chip multiprocessors). In this article we focus on the implications of concurrency for software and its consequences for both programming languages and programmers.},
	author = {Sutter, H.  and Larus, J. },
	citeulike-article-id = {1667571},
	journal = {Queue},
	keywords = {bibtex-import},
	month = {September},
	number = {7},
	pages = {54--62},
	pdf = {p54-sutter.pdf},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	publisher = {ACM Press New York, NY, USA},
	title = {{Software and the concurrency revolution}},
	volume = {3},
	year = {2005}
}



@misc{java,
	author = {{sun}},
	citeulike-article-id = {1667570},
	howpublished = {http://java.sun.com},
	keywords = {bibtex-import},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	title = {Java},
	url = {http://java.sun.com}
}



@inproceedings{1167514,
	abstract = {Aspect-oriented programming is considered a promising new technology. As object-oriented programming did before, it is beginning to pervade all areas of software engineering. With its growing popularity, practitioners and academics alike are wondering whether they should start looking into it, or otherwise risk having missed an important development. The author of this essay finds that much of aspect-oriented programming’s success seems to be based on the conception that it improves both modularity and the structure of code, while in fact, it works against the primary purposes of the two, namely independent development and understandability of programs. Not seeing any way of fixing this situation, he thinks the success of aspect-oriented programming to be paradoxical.},
	address = {New York, NY, USA},
	author = {Steimann, Friedrich  },
	booktitle = {OOPSLA '06: Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications},
	citeulike-article-id = {1667569},
	doi = {http://doi.acm.org/10.1145/1167473.1167514},
	keywords = {bibtex-import},
	pages = {481--497},
	pdf = {p481-steimann.pdf},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	publisher = {ACM Press},
	title = {The paradoxical success of aspect-oriented programming},
	year = {2006}
}



@misc{Spolsky2006,
	author = {Spolsky, Joel  },
	citeulike-article-id = {1667568},
	howpublished = {http://www.joelonsoftware.com/items/2006/12/15.html},
	keywords = {bibtex-import},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	title = {Elegance},
	url = {http://www.joelonsoftware.com/items/2006/12/15.html}
}



@incollection{shaw95formulations,
	abstract = {Software architecture is the level of software design that addresses the overall structure and properties of software systems. It provides a focus for certain aspects of design and development that are not appropriately addressed within the constituent modules. Architectural design depends heavily on accurate specifications of subsystems and their interactions. These specifications must cover a wide variety of properties, so the specification notations and associated methods must be selected or developed to match the properties of interest. Unfortunately, the available formal methods are only a partial match for architectural needs, which entail description of structure, packaging, environmental assumptions, representation, and performance as well as functionality. A prerequisite for devising or selecting a formal method is sound understanding of what needs to be formalized. For software architecture, much of this understanding is arising through progressive codification, which begins with real-world examples and creates progressively more precise models that eventually support formalization. This paper explores the progressive codication of software architecture: the relation between emerging models and the selection, development, and use of formal systems.},
	author = {Shaw, Mary   and Garlan, David  },
	booktitle = {Computer Science Today: Recent Trends and Developments},
	citeulike-article-id = {1667566},
	editor = {van Leeuwen, Jan  },
	keywords = {bibtex-import},
	pages = {307--323},
	pdf = {saformalisms-lncs1000.pdf},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	publisher = {Springer-Verlag},
	series = {Lecture Notes in Computer Science},
	title = {Formulations and Formalisms in Software Architecture},
	url = {citeseer.ist.psu.edu/shaw95formulations.html},
	volume = {1000},
	year = {1995}
}

@techreport{citeulike:3213663,
	address = {Rome, Italy},
	author = {Buxton, J. N.  and Randell, B. },
	citeulike-article-id = {3213663},
	editor = {Buxton, J. N.  and Randell, B. },
	institution = {NATO Science Committee},
	keywords = {architecture, history, software, software-architecture, software-engineering, techniques},
	month = {April},
	posted-at = {2008-09-10 19:11:19},
	priority = {2},
	publisher = {NATO Science Committee},
	title = {{Software Engineering Techniques}},
	year = {1970}
}


@article{schneberger1995smd,
	abstract = {This paper addresses a new area of research - distributed system software maintenance-focusing on whether and to what extent distributed computing environments directly affect software maintenance diflculty. The issue appears to depend on two diametrics of information system architectures: component simplicity and system complexity. Using a new conceptual model for information systems complexity applied to distributed computing environments, this research sought empirical quantitative and qualitative data from IS professionals to determine whether the complexity of a distributed computer system has a greater effect on software maintenance than component simplicity, and what the explanatory factors are. Results indicate the overall complexity of studied distributed systems overwhelmed the ease-of-use and simplicity of their components-increasing the overall difficulty of software maintenance. Some factors had a greater effect than others; the rate of technological change and the variety of components (particularly processors and system soffware) far outweighed the effects of component and transaction numbers.},
	author = {Schneberger, S. L. },
	citeulike-article-id = {1667565},
	journal = {Software Maintenance, 1995. Proceedings., International Conference on},
	keywords = {bibtex-import},
	pages = {304--313},
	pdf = {Schneberger95.pdf},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	title = {{Software maintenance in distributed computer environments: system complexity versus component simplicity}},
	year = {1995}
}



@misc{beta,
	author = {{scandinavian}},
	citeulike-article-id = {1667564},
	howpublished = {http://www.daimi.au.dk/~beta/},
	keywords = {bibtex-import},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	title = {{The BETA Language Home Page}}
}



@inproceedings{easyaccept,
	address = {New York, NY, USA},
	author = {Sauv\'{e};, Jacques  P.  and Os\'{o}rio and Cirne, Walfredo  },
	booktitle = {AST '06: Proceedings of the 2006 international workshop on Automation of software test},
	citeulike-article-id = {1667563},
	doi = {http://doi.acm.org/10.1145/1138929.1138951},
	keywords = {bibtex-import},
	pages = {111--117},
	pdf = {easyaccept-ast25-final.pdf},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	publisher = {ACM Press},
	title = {{EasyAccept: a tool to easily create, run and drive development with automated acceptance tests}},
	year = {2006}
}



@misc{psi-1,
	author = {Sauv\'{e}, Jacques  P. },
	citeulike-article-id = {1667562},
	howpublished = {http://dsc.ufcg.edu.br/~jacques/cursos/2006.2/si1/projeto/index.html},
	keywords = {bibtex-import},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	title = {{Projeto de Sistemas de Informaç\~{a}o 1 - Jackut}},
	url = {http://dsc.ufcg.edu.br/~jacques/cursos/2006.2/si1/projeto/index.html},
	year = {2007}
}



@incollection{roberts97evolving,
	abstract = {Although a good object-oriented framework is valuable, developing them is hard. This paper describes a process for developing a framework that is iterative and that reuses experience developing applications in the same problem domain. The process is described as a pattern language.},
	author = {Roberts, Don   and Johnson, Ralph  E. },
	booktitle = {Pattern Languages of Program Design 3},
	citeulike-article-id = {1667561},
	keywords = {bibtex-import},
	pdf = {roberts96evolving.pdf},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	publisher = {Addison Wesley},
	title = {Evolving Frameworks: {A} Pattern Language for Developing Object-Oriented Frameworks},
	url = {citeseer.ist.psu.edu/roberts96evolving.html},
	year = {1997}
}



@article{Reeves1992,
	author = {Reeves, Jack  W. },
	citeulike-article-id = {1667560},
	journal = {C++ Journal},
	keywords = {bibtex-import},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	title = {{What is Software Design?}},
	url = {http://www.bleading-edge.com/Publications/C++Journal/Cpjour2.htm},
	year = {1992}
}



@article{Reed1998,
	author = {Reed, M. G.  and Syverson, P. F.  and Goldschlag, D. M. },
	citeulike-article-id = {1667559},
	doi = {10.1109/49.668972},
	journal = {Selected Areas in Communications, IEEE Journal on},
	keywords = {bibtex-import},
	month = {May},
	number = {4},
	pages = {482--494},
	pdf = {00668972.pdf},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	title = {Anonymous connections and onion routing},
	volume = {16},
	year = {1998}
}



@article{ratsanamy2001sca,
	abstract = {Hash tables -- which map ``keys'' onto ``values'' -- are an essential building block in modern software systems. We believe a similar functionality would be equally valuable to large distributed systems. In this paper, we introduce the concept of a Content-Addressable Network (CAN) as a distributed infrastructure that provides hash table-like functionality on Internet-like scales. The CAN is scalable, fault-tolerant and completely self-organizing, and we demonstrate its scalability, robustness and low-latency properties through simulation.},
	author = {Ratsanamy, S.  and Francis, P.  and Handley, M.  and Karp, R. },
	citeulike-article-id = {1667557},
	journal = {ACM SIGCOMM Conference},
	keywords = {bibtex-import},
	pages = {161--172},
	pdf = {p13-ratnasamy.pdf},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	title = {{A Scalable Content-Addressable Network}},
	year = {2001}
}



@article{pouwelse2006tsb,
	author = {Pouwelse, J. A.  and Garbacki, P.  and Bakker, J. W. A.  and Yang, J.  and Iosup, A.  and Epema, D.  and Reinders, M.  and van Steen, M. R.  and Sips, H. J. },
	citeulike-article-id = {1667556},
	journal = {5th Int'l Workshop on Peer-to-Peer Systems (IPTPS)},
	keywords = {bibtex-import},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	title = {{Tribler: A social-based based peer to peer system}},
	year = {2006}
}



@book{lnoa,
	author = {Parberry, Ian  },
	citeulike-article-id = {1667554},
	keywords = {bibtex-import},
	pdf = {lnoa.pdf},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	publisher = {Department of Computer Sciences - University of North Texas},
	title = {Lecture Notes on Algorithm Analysis and Computational Complexity (4th Edition)},
	year = {2001}
}



@inproceedings{murata1989pnp,
	author = {Murata, T. },
	booktitle = {Proceedings of the IEEE},
	citeulike-article-id = {1667553},
	keywords = {bibtex-import},
	number = {4},
	pages = {541--580},
	pdf = {murata89.pdf},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	title = {{Petri Nets: Properties, Analysis and Applications}},
	url = {http://ieeexplore.ieee.org/iel1/5/911/00024143.pdf?isnumber=911∏=JNL\&arnumber=24143\&arnumber=24143\&arSt=541\&ared=580\&arAuthor=Murata\%2C+T.},
	volume = {77},
	year = {1989}
}



@misc{Mockapetris1987,
	author = {Mockapetris, Paul  },
	citeulike-article-id = {1667552},
	comment = {(private-note)Available from http://www.rfc-editor.org/rfc/rfc1034.txt},
	howpublished = {Internet Requests for Comments (RFCs), 1034:55},
	keywords = {bibtex-import},
	month = {November},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	title = {{Domain names—concepts and facilities}},
	url = {http://www.rfc-editor.org/rfc/rfc1034.txt},
	year = {1987}
}



@misc{mavronicolas:dct,
	author = {Mavronicolas, M. },
	citeulike-article-id = {1667551},
	howpublished = {\url{http://www2.cs.ucy.ac.cy/~mavronic/pdf/M01.pdf}},
	keywords = {bibtex-import},
	month = {January},
	pdf = {M01.pdf},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	title = {{Distributed Computing Theory To Date (Part I: Models and an Example)}},
	url = {http://www2.cs.ucy.ac.cy/~mavronic/pdf/M01.pdf},
	year = {2001}
}



@misc{Malan2002,
	author = {Malan, Ruth   and Bredemeyer, Dana  },
	citeulike-article-id = {1667550},
	howpublished = {http://www.bredemeyer.com/Architecture/Minimalist Architecture.htm},
	keywords = {bibtex-import},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	title = {Minimalist Architecture},
	url = {http://www.bredemeyer.com/Architecture/Minimalist\_Architecture.htm},
	year = {2002}
}



@book{Malan2006,
	author = {Malan, Ruth   and Bredemeyer, Dana  },
	citeulike-article-id = {1667549},
	keywords = {bibtex-import},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	publisher = {Bredemeyer Consulting},
	title = {Software Architecture Action Guide},
	year = {2006}
}



@techreport{lynch98,
	author = {Lynch, N. A.  and Tuttle, M. R. },
	citeulike-article-id = {1667548},
	institution = {M.I.T. Laboratory for Computer Science},
	keywords = {bibtex-import},
	month = {November},
	number = {MIT/LCS/TM-373},
	pdf = {lt89-cwi.pdf},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	title = {An introduction to input/output automata},
	year = {1998}
}



@article{lee2006pt,
	author = {Lee, E. A. },
	citeulike-article-id = {1667547},
	journal = {IEEE Computer},
	keywords = {bibtex-import},
	number = {5},
	pages = {33--42},
	pdf = {problemwiththreads.pdf},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	title = {{The problem with threads}},
	volume = {39},
	year = {2006}
}



@article{lea1994cai,
	abstract = {Software developers lament ``If only software engineering could be more like X ...'', where X is any design-intensive profession with a longer and apparently more successful history than software. It is therefore both comforting and troubling to discover that the same fundamental philosophical, methodological, and pragmatic concerns arise in all of these Xs (see, for example, [23,33,43,46,18,45,48,50]). In part because it is considered as much artistry as engineering, writings about architecture have most extensively explored and argued out the basic underpinnings of design. Even within this context, the ideas of the architect Christopher Alexander stand out as penetrating, and bear compelling implications for software design. Alexander is increasingly well-known in object-oriented (OO) design circles for his influential work on ``patterns''. This paper considers patterns within a broader review of Alexander's prolific writings on design. These include core books Notes on the Synthesis of Form[1], The Timeless Way of Building[5], and A Pattern Language[4] (hereafter abbreviated as Notes, Timeless, and Patterns respectively), other books based mostly on case studies[15,3,6,7,8], related articles (especially [2,9]), and a collaborative biography[29]. This review introduces some highlights of Alexander's work. The format is mainly topical, roughly in historical order, interspersed and concluded with remarks about connections to software design. It focuses on conceptual issues, but omits topics (e.g., geometry and color) that seem less central to software. Some discussions are abstracted and abbreviated to the point of caricature, and in no case capture the poetry of Alexander's writings that can only be appreciated by reading the originals, or the concreteness and practicality of pattern-based development that can only be conveyed through experience.},
	author = {Lea, D. },
	citeulike-article-id = {1667546},
	journal = {ACM SIGSOFT Software Engineering Notes},
	keywords = {bibtex-import},
	number = {1},
	pages = {39--46},
	pdf = {p39-lea.pdf},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	publisher = {ACM Press New York, NY, USA},
	title = {{Christopher Alexander: an introduction for object-oriented designers}},
	volume = {19},
	year = {1994}
}



@inproceedings{806614,
	abstract = {Experience with the design and implementation of a number of computer systems, and study of many other systems, has led to some general hints for system design which are described here. They are illustrated by a number of examples, ranging from hardware such as the Alto and the Dorado to applications programs such as Bravo and Star.},
	address = {New York, NY, USA},
	author = {Lampson, Butler  W. },
	booktitle = {SOSP '83: Proceedings of the ninth ACM symposium on Operating systems principles},
	citeulike-article-id = {1667545},
	doi = {http://doi.acm.org/10.1145/800217.806614},
	keywords = {bibtex-import},
	pages = {33--48},
	pdf = {p33-lampson.pdf},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	publisher = {ACM Press},
	title = {Hints for computer system design},
	year = {1983}
}



@article{lamport1991dcm,
	author = {Lamport, L.  and Lynch, N. },
	citeulike-article-id = {1667544},
	journal = {Handbook of theoretical computer science (vol. B): formal models and semantics table of contents},
	keywords = {bibtex-import},
	pages = {1157--1199},
	pdf = {lamport-chapter.pdf},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	publisher = {MIT Press Cambridge, MA, USA},
	title = {{Distributed computing: models and methods}},
	year = {1991}
}



@article{Kristensen98,
	author = {Kristensen, L. M.  and Christensen, S.  and Jensen, K. },
	citeulike-article-id = {1667542},
	journal = {International Journal on Software Transfer Technology, Springer-Verlag},
	keywords = {bibtex-import},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	title = {{The practitioner´s Guide to Coloured Pertri Nets}},
	year = {1998}
}



@article{1232745,
	abstract = {Why is it that some software engineers and computer scientists are able to produce clear, elegant designs and programs, while others cannot? Is it possible to improve these skills through education and training? Critical to these questions is the notion of abstraction.},
	address = {New York, NY, USA},
	author = {Kramer, Jeff  },
	citeulike-article-id = {1667541},
	doi = {http://doi.acm.org/10.1145/1232743.1232745},
	journal = {Commun. ACM},
	keywords = {bibtex-import},
	number = {4},
	pages = {36--42},
	pdf = {p36-kramer.pdf},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	publisher = {ACM Press},
	title = {Is abstraction the key to computing?},
	volume = {50},
	year = {2007}
}



@techreport{974938,
	address = {Mountain View, CA, USA},
	author = {Kendall, Samuel  C.  and Waldo, Jim   and Wollrath, Ann   and Wyant, Geoff  },
	citeulike-article-id = {1667540},
	keywords = {bibtex-import},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	publisher = {Sun Microsystems, Inc.},
	title = {A Note on Distributed Computing},
	year = {1994}
}



@inproceedings{313019,
	address = {New York, NY, USA},
	author = {Karger, David   and Sherman, Alex   and Berkheimer, Andy   and Bogstad, Bill   and Dhanidina, Rizwan   and Iwamoto, Ken   and Kim, Brian   and Matkins, Luke   and Yerushalmi, Yoav  },
	booktitle = {WWW '99: Proceeding of the eighth international conference on World Wide Web},
	citeulike-article-id = {1667539},
	doi = {http://dx.doi.org/10.1016/S1389-1286(99)00055-9},
	keywords = {bibtex-import},
	pages = {1203--1213},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	publisher = {Elsevier North-Holland, Inc.},
	title = {Web caching with consistent hashing},
	year = {1999}
}



@inbook{Kapor96,
	address = {New York, NY, USA},
	author = {Kapor, Mitchell  },
	chapter = {A software design manifesto},
	citeulike-article-id = {1667538},
	doi = {http://doi.acm.org/10.1145/229868.230026},
	keywords = {bibtex-import},
	pages = {1--6},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	publisher = {ACM Press},
	title = {Bringing design to software},
	year = {1996}
}



@misc{Jernevad2006,
	author = {Jernevad, Henrik  },
	citeulike-article-id = {1667536},
	howpublished = {http://henko.net/imperfection/simplicity-in-software-design/},
	keywords = {bibtex-import},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	title = {Simplicity in Software Design},
	url = {http://henko.net/imperfection/simplicity-in-software-design/},
	year = {2006}
}



@book{Linden2000,
	author = {Jazayeri, M.  and Ran, A.  and Van der Linden, F. },
	citeulike-article-id = {1667535},
	keywords = {bibtex-import},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	publisher = {Addison-Wesley Longman},
	title = {Software Architecture for Product Families},
	year = {2000}
}



@inbook{Leeuwen2000,
	author = {Wiedermann},
	chapter = {The Turing machine paradigm in contemporary computing},
	citeulike-article-id = {1667534},
	editor = {Enquist, B.  and Schmidt, W. },
	keywords = {bibtex-import},
	pdf = {vanleeuwen00turing.pdf},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	publisher = {Springer-Verlag},
	title = {Mathematics Unlimited - 2001 and Beyond},
	year = {2000}
}



@article{iosup2006,
	author = {Iosup, A.  and Dumitrescu, C.  and Epema, D. H. J.  and Li, H.  and Wolters, L. },
	citeulike-article-id = {1667533},
	journal = {The 7th IEEE/ACM International Conference on Grid Computing (Grid2006)},
	keywords = {bibtex-import},
	pages = {262--269},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	publisher = {IEEE Computer Society},
	title = {How Are Real Grids Used? The Analysis of Four Grid Traces and its Implications}
}



@misc{pipe2,
	author = {{imperial}},
	citeulike-article-id = {1667532},
	howpublished = {http://pipe2.sourceforge.net/about.html},
	keywords = {bibtex-import},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	title = {{Platform Independent Petri net Editor 2 - PIPE2}},
	url = {http://pipe2.sourceforge.net/about.html}
}



@misc{grid-economics,
	author = {{ibm}},
	citeulike-article-id = {1667531},
	howpublished = {https://www.zurich.ibm.com/grideconomics/refs.html},
	keywords = {bibtex-import},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	title = {Grid Economics},
	url = {https://www.zurich.ibm.com/grideconomics/refs.html}
}



@inproceedings{SimJava,
	author = {Howell, Fred   and Mcnab, Ross  },
	booktitle = {First International Conference on Web-based modelling and simulation},
	citeulike-article-id = {1667530},
	keywords = {bibtex-import},
	organization = {Society for Computer Simulation},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	title = {{SimJava: a discrete event simulation package for Java with applications in computer systems modelling}},
	year = {1998}
}



@article{359585,
	address = {New York, NY, USA},
	author = {Hoare, C. A. R. },
	citeulike-article-id = {1667529},
	doi = {http://doi.acm.org/10.1145/359576.359585},
	journal = {Commun. ACM},
	keywords = {bibtex-import},
	number = {8},
	pages = {666--677},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	publisher = {ACM Press},
	title = {Communicating sequential processes},
	volume = {21},
	year = {1978}
}



@misc{Haggar02,
	abstract = {All programming languages have their share of idioms. Many are useful to know and use, and programmers spend valuable time creating, learning, and implementing them. The problem is that some idioms are later proven not to be all that they were purported, or to simply not work as described. The Java programming language contains several useful programming idioms. It also contains some that further study has shown should not be used. Double-checked locking is one such idiom that should never be used. In this article, Peter Haggar examines the roots of the double-checked locking idiom, why it was developed, and why it doesn't work.},
	author = {Haggar, Peter  },
	citeulike-article-id = {1667528},
	howpublished = {IBM DeveloperWorks},
	keywords = {bibtex-import},
	month = {May},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	title = {{Double-checked locking and the Singleton pattern}},
	url = {http://www-128.ibm.com/developerworks/library/j-dcl.html},
	year = {2002}
}



@misc{Orkut,
	author = {{google}},
	citeulike-article-id = {1667527},
	howpublished = {http://www.orkut.com/About.aspx},
	keywords = {bibtex-import},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	title = {Orkut},
	url = {http://www.orkut.com/About.aspx},
	year = {2007}
}



@misc{Goetz01B,
	author = {Goetz, Brian  },
	citeulike-article-id = {1667526},
	howpublished = {{JavaWorld}},
	keywords = {bibtex-import},
	month = {November},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	title = {{Can ThreadLocal solve the double-checked locking problem?}},
	url = {http://www.javaworld.com/javaworld/jw-11-2001/jw-1116-dcl.html},
	year = {2001}
}



@misc{Goetz01A,
	author = {Goetz, Brian  },
	citeulike-article-id = {1667525},
	howpublished = {{JavaWorld}},
	keywords = {bibtex-import},
	month = {May},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	title = {Can double-checked locking be fixed?},
	url = {http://www.javaworld.com/javaworld/jw-05-2001/jw-0525-double.html},
	year = {2001}
}



@misc{Goetz01,
	author = {Goetz, Brian  },
	citeulike-article-id = {1667524},
	howpublished = {{JavaWorld}},
	keywords = {bibtex-import},
	month = {February},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	title = {Double-checked locking: Clever, but broken},
	url = {http://www.javaworld.com/javaworld/jw-02-2001/jw-0209-double.html},
	year = {2001}
}



@techreport{GarlanShaw94,
	abstract = {As the size of software systems increases, the algorithms and data structures of the computation no longer constitute the major design problems. When systems are constructed from many components, the organization of the overall system—the software architecture—presents a new set of design problems. This level of design has been addressed in a number of ways including informal diagrams and descriptive terms, module interconnection languages, templates and frameworks for systems that serve the needs of specific domains, and formal models of component integration mechanisms. In this paper we provide an introduction to the emerging field of software architecture. We begin by considering a number of common architectural styles upon which many systems are currently based and show how different styles can be combined in a single design. Then we present six case studies to illustrate how architectural representations can improve our understanding of complex software systems. Finally, we survey some of the outstanding problems in the field, and consider a few of the promising research directions.},
	address = {Pittsburgh, PA 15213-3890},
	author = {Garlan, David   and Shaw, Mary  },
	citeulike-article-id = {1667523},
	institution = {Carnegie Mellon University},
	keywords = {bibtex-import},
	month = {January},
	number = {CMU-CS-94-166},
	pdf = {intro\_softarch.pdf},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	title = {{An Introduction to Software Architecture}},
	year = {1994}
}



@inproceedings{Garlan94,
	address = {Los Alamitos, CA, USA},
	author = {Garlan, David   and Perry, Dewayne  },
	booktitle = {ICSE '94: Proceedings of the 16th international conference on Software engineering},
	citeulike-article-id = {1667522},
	keywords = {bibtex-import},
	pages = {363--364},
	pdf = {garlan94.pdf},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	publisher = {IEEE Computer Society Press},
	title = {Software architecture: practice, potential, and pitfalls},
	year = {1994}
}



@article{Garlan1995,
	author = {Garlan, David   and Perry, Dewayne  },
	citeulike-article-id = {1667521},
	journal = {IEEE Transactions on Software Engineering},
	keywords = {bibtex-import},
	month = {April},
	number = {4},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	title = {Introduction to the Special Issue on Software Architecture},
	volume = {21},
	year = {1995}
}



@article{garbacki2006cdp,
	author = {Garbacki, P.  and Iosup, A.  and Epema, D.  and van Steen, M. },
	citeulike-article-id = {1667520},
	journal = {Proceedings of the Sixth IEEE International Conference on Peer-to-Peer Computing},
	keywords = {bibtex-import},
	pages = {23--30},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	publisher = {IEEE Computer Society Washington, DC, USA},
	title = {{2Fast: Collaborative Downloads in P2P Networks}},
	year = {2006}
}



@misc{gafni1998dcg,
	author = {Gafni, E. },
	citeulike-article-id = {1667518},
	keywords = {bibtex-import},
	pdf = {distributed-computing-a-glimmer.pdf},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	publisher = {CRC Press},
	title = {{Distributed Computing: a Glimmer of a Theory, in Handbook of Computer Science}},
	year = {1998}
}



@inproceedings{Gabriel06,
	abstract = {Software needs to grow up and become responsible for itself and its own future by participating in its own installation and customization, maintaining its own health, and adapting itself to new circumstances, new users, and new uses. To create such software will require us to change some of our underlying assumptions about how we write programs. A promising approach seems to be to separate software that does the work (allopoietic) from software that keeps the system alive (autopoietic).},
	address = {New York, NY, USA},
	author = {Gabriel, Richard  P.  and Goldman, Ron  },
	booktitle = {OOPSLA '06: Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications},
	citeulike-article-id = {1667517},
	doi = {http://doi.acm.org/10.1145/1167473.1167510},
	keywords = {bibtex-import},
	pages = {433--450},
	pdf = {p433-gabriel.pdf},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	publisher = {ACM Press},
	title = {Conscientious software},
	year = {2006}
}



@misc{Frigg06,
	abstract = {Models are of central importance in many scientific contexts. The centrality of models such as the billiard ball model of a gas, the Bohr model of the atom, the MIT bag model of the nucleon, the Gaussian-chain model of a polymer, the Lorenz model of the atmosphere, the Lotka-Volterra model of predator-prey interaction, the double helix model of DNA, agent-based and evolutionary models in the social sciences, or general equilibrium models of markets in their respective domains are cases in point. Scientists spend a great deal of time building, testing, comparing and revising models, and much journal space is dedicated to introducing, applying and interpreting these valuable tools. In short, models are one of the principle instruments of modern science. Philosophers are acknowledging the importance of models with increasing attention and are probing the assorted roles that models play in scientific practice. The result has been an incredible proliferation of model-types in the philosophical literature. Probing models, phenomenological models, computational models, developmental models, explanatory models, impoverished models, testing models, idealized models, theoretical models, scale models, heuristic models, caricature models, didactic models, fantasy models, toy models, imaginary models, mathematical models, substitute models, iconic models, formal models, analogue models and instrumental models are but some of the notions that are used to categorize models. While at first glance this abundance is overwhelming, it can quickly be brought under control by recognizing that these notions pertain to different problems that arise in connection with models. For example, models raise questions in semantics (what is the representational function that models perform?), ontology (what kind of things are models?), epistemology (how do we learn with models?), and, of course, in philosophy of science (how do models relate to theory?; what are the implications of a model based approach to science for the debates over scientific realism, reductionism, explanation and laws of nature?).},
	author = {Frigg, Roman   and Hartmann, Stephan  },
	citeulike-article-id = {1667516},
	howpublished = {Stanford Encyclopedia of Philosophy},
	keywords = {bibtex-import},
	month = {February},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	title = {Models in Science},
	url = {http://plato.stanford.edu/entries/models-science/},
	year = {2006}
}



@misc{MartinFowler2004IoC,
	abstract = {In the Java community there's been a rush of lightweight containers that help to assemble components from different projects into a cohesive application. Underlying these containers is a common pattern to how they perform the wiring, a concept they refer under the very generic name of "Inversion of Control". In this article I dig into how this pattern works, under the more specific name of "Dependency Injection", and contrast it with the Service Locator alternative. The choice between them is less important than the principle of separating configuration from use.},
	author = {Fowler, Martin  },
	citeulike-article-id = {1667515},
	howpublished = {http://www.martinfowler.com/articles/injection.html},
	keywords = {bibtex-import},
	month = {January},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	title = {Inversion of Control Containers and the Dependency Injection pattern},
	url = {http://www.martinfowler.com/articles/injection.html},
	year = {2004}
}



@misc{Fowler2004,
	abstract = {For many that come briefly into contact with Extreme Programming, it seems that XP calls for the death of software design. Not just is much design activity ridiculed as "Big Up Front Design", but such design techniques as the UML, flexible frameworks, and even patterns are de-emphasized or downright ignored. In fact XP involves a lot of design, but does it in a different way than established software processes. XP has rejuvenated the notion of evolutionary design with practices that allow evolution to become a viable design strategy. It also provides new challenges and skills as designers need to learn how to do a simple design, how to use refactoring to keep a design clean, and how to use patterns in an evolutionary style.},
	author = {Fowler, Martin  },
	citeulike-article-id = {1667514},
	howpublished = {http://www.martinfowler.com/articles/designDead.html},
	keywords = {bibtex-import},
	month = {May},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	title = {Is Design Dead?},
	url = {http://www.martinfowler.com/articles/designDead.html},
	year = {2004}
}



@article{foster2001age,
	abstract = {"Grid" computing has emerged as an important new field, distinguished from conventional distributed computing by its focus on large-scale resource sharing, innovative applications, and, in some cases, high performance orientation. In this article, the authors define this new field. First, they review the "Grid problem," which is defined as flexible, secure, coordinated resource sharing among dynamic collections of individuals, institutions, and resources—what is referred to as virtual organizations. In such settings, unique authentication, authorization, resource access, resource discovery, and other challenges are encountered. It is this class of problem that is addressed by Grid technologies. Next, the authors present an extensible and open Grid architecture, in which protocols, services, application programming interfaces, and software development kits are categorized according to their roles in enabling resource sharing. The authors describe requirements that they believe any such mechanisms must satisfy and discuss the importance of defining a compact set of intergrid protocols to enable interoperability among different Grid systems. Finally, the authors discuss how Grid technologies relate to other contemporary technologies, including enterprise integration, application service provider, storage service provider, and peer-to-peer computing. They maintain that Grid concepts and technologies complement and have much to contribute to these other approaches.},
	author = {Foster, I.  and Kesselman, C.  and Tuecke, S. },
	citeulike-article-id = {1667513},
	journal = {International Journal of High Performance Computing Applications},
	keywords = {bibtex-import},
	number = {3},
	pdf = {foster01anatomy.pdf},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	title = {{The Anatomy of the Grid: Enabling Scalable Virtual Organizations}},
	volume = {15},
	year = {2001}
}



@article{fischer2003atd,
	address = {London, UK},
	author = {Fischer, Michael  J.  and Merritt, Michael  },
	citeulike-article-id = {1667512},
	doi = {http://dx.doi.org/10.1007/s00446-003-0096-6},
	journal = {Distributed Computing},
	keywords = {bibtex-import},
	month = {September},
	number = {2},
	pages = {239--247},
	pdf = {appraising.pdf},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	publisher = {Springer-Verlag},
	title = {{Appraising two decades of distributed computing theory research}},
	volume = {16},
	year = {2003}
}



@techreport{891200,
	abstract = {This paper proposes that the distinguishing characteristic of Aspect-Oriented Programming (AOP) systems is that they allow programming by making quantified programmatic assertions over programs written by programmers oblivious to such assertions. Thus, AOP systems can be analyzed with respect to three critical dimensions: the kinds of quantifications allowed, the nature of the actions that can be asserted, and the mechanism for combining base-level actions with asserted actions. Consequences of this perspective are the recognition that certain systems are not AOP and that some mechanisms are expressive enough to allow programming an AOP system within them. A corollary is that while AOP can be applied to Object-Oriented Programming, it is an independent concept applicable to other programming styles.},
	author = {Filman, Robert  E.  and Friedman, Daniel  P. },
	citeulike-article-id = {1667511},
	keywords = {bibtex-import},
	pdf = {TR\_01.12.pdf},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	publisher = {RIACS},
	title = {Aspect-Oriented Programming is Quantification and Obliviousness},
	year = {2000}
}



@article{dean2004msd,
	author = {Dean, J.  and Ghemawat, S. },
	citeulike-article-id = {1667510},
	journal = {6th Symposium on Operating Systems Design \& Implementation (OSDI’04)},
	keywords = {bibtex-import},
	pdf = {dean.pdf},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	title = {{MapReduce: Simplified Data Processing on Large Clusters}},
	year = {2004}
}



@misc{BaconDCL,
	author = {{david}},
	citeulike-article-id = {1667509},
	keywords = {bibtex-import},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	title = {{The ``Double-Checked Locking is Broken'' Declaration}},
	url = {http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html}
}



@article{Cox1995,
	abstract = {Superdistribution could let software engineers overcome the software crisis as tangible domains surmounted the same problem, by encapsulating complexity so thoroughly that everyone else can forget it. The solution requires enforcing property rights in digital goods as robustly as conservation of mass enforces them for tangible goods.},
	author = {Cox, Brad  },
	citeulike-article-id = {1667506},
	journal = {American Programmer Journal},
	keywords = {bibtex-import},
	month = {november},
	pdf = {bullet.pdf},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	title = {No Silver Bullet Revisted},
	year = {1995}
}



@inproceedings{Constantinides2004,
	abstract = {In his famous letter “Go To statement considered harmful” Dijkstra started a discussion finally resulting in banning of most unstructured control flow statements from modern high level programming languages. To overcome limitations of todays programming languages, aspect oriented programming has been proposed. Unfortunately language elements used by many AO languages are in a way similar to the Go To statment, so we ask the provocative: AOP considered harmful?},
	author = {Constantinides, C.  and Skotiniotis, T.  and Stoerzer, M. },
	booktitle = {1st European Interactive Workshop on Aspect Systems (EIWAS)},
	citeulike-article-id = {1667505},
	keywords = {bibtex-import},
	pdf = {stoerzer04aop\_harmful.pdf},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	title = {{AOP considered harmful}},
	year = {2004}
}



@misc{Connell2002,
	author = {Connell, Charles  },
	citeulike-article-id = {1667504},
	howpublished = {http://www.chc-3.com/pub/beautifulsoftware.htm},
	keywords = {bibtex-import},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	title = {Most Software Stinks!},
	url = {http://www.chc-3.com/pub/beautifulsoftware.htm}
}



@techreport{tech-clements96,
	author = {Clements, Paul   and Northrop, Linda  M. },
	citeulike-article-id = {1667503},
	institution = {Software Engineering Institute, Carnegie Mellon University},
	keywords = {bibtex-import},
	number = {CMU/SEI-96-TR-003},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	title = {Software Architecture: An Executive Overview},
	year = {1996}
}



@misc{Clements,
	author = {Clements, Paul  },
	citeulike-article-id = {1667502},
	howpublished = {http://www.sei.cmu.edu/architecture/essays.html\#difference},
	keywords = {bibtex-import},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	title = {What's the Difference Between Architecture and Design},
	url = {http://www.sei.cmu.edu/architecture/essays.html\#difference}
}



@inproceedings{371977,
	address = {New York, NY, USA},
	author = {Clarke, Ian   and Sandberg, Oskar   and Wiley, Brandon   and Hong, Theodore  W. },
	booktitle = {International workshop on Designing privacy enhancing technologies},
	citeulike-article-id = {1667501},
	keywords = {bibtex-import},
	pages = {46--66},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	publisher = {Springer-Verlag New York, Inc.},
	title = {Freenet: A Distributed Anonymous Information Storage and Retrieval System},
	year = {2001}
}



@article{cirne2006lwu,
	author = {Cirne, W.  and Brasileiro, F.  and Andrade, N.  and Costa, L. B.  and Andrade, A.  and Novaes, R.  and Mowbray, M. },
	citeulike-article-id = {1667500},
	journal = {Journal of Grid Computing},
	keywords = {bibtex-import},
	number = {3},
	pages = {225--246},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	publisher = {Springer},
	title = {{Labs of the World, Unite!!!}},
	volume = {4},
	year = {2006}
}



@misc{christensen1996dco,
	author = {Christensen, S.  and Haagh, T. B. },
	citeulike-article-id = {1667499},
	howpublished = {University of Aarhus},
	journal = {University of Aarhus},
	keywords = {bibtex-import},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	title = {{Design/CPN Overview of CPN ML Syntax}},
	year = {1996}
}



@misc{SADef,
	author = {{carnegie}},
	citeulike-article-id = {1667498},
	howpublished = {http://www.sei.cmu.edu/architecture/definitions.html},
	keywords = {bibtex-import},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	title = {How Do You Define Software Architecture?},
	url = {http://www.sei.cmu.edu/architecture/definitions.html}
}



@book{burns1980fmm,
	author = {Burns, J. E. },
	citeulike-article-id = {1667496},
	keywords = {bibtex-import},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	publisher = {Computer Science Dept., Indiana University},
	title = {{A Formal Model for Message Passing Systems}},
	year = {1980}
}



@inproceedings{Brooks1986,
	author = {Brooks, Fred  },
	booktitle = {Proceedings of the IFIP Tenth World Computing Conference},
	citeulike-article-id = {1667495},
	keywords = {bibtex-import},
	pages = {1069--1076},
	pdf = {nosilverbullet.pdf},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	title = {No Silver Bullet - Essence and Accident in Software Engineering},
	year = {1986}
}


@article{citeulike:4332884,
	abstract = {It appears to be with software architectures: for a given domain, even across the decades, forces are at play that are best resolved by a common architectural pattern that allows variants. One architectural style might be deemed "better" than another for that domain because it better resolves those forces. In that sense, there's a goodness of fit - not necessarily a perfect fit, but good enough},
	author = {Booch, G. },
	booktitle = {Software, IEEE},
	citeulike-article-id = {4332884},
	doi = {10.1109/MS.2006.162},
	journal = {Software, IEEE},
	keywords = {quality, software, software-architecture, software-engineering},
	number = {6},
	pages = {14--15},
	posted-at = {2009-04-16 18:28:33},
	priority = {0},
	title = {Goodness of Fit},
	url = {http://dx.doi.org/10.1109/MS.2006.162},
	volume = {23},
	year = {2006}
}

	



@misc{Berners-Lee2002,
	abstract = {Again and again we fall back on the folklore of the principles of good design. Sometimes I need a URI for them so this is started as collection of them. I have written about some in many places. Principles such as simplicity and modularity are the stuff of software engineering; decentralization and tolerance are the life and breath of Internet. Brian Carpenter has enumerated some principles of design of the Net [carpenter]. The third pair of ideas I have found commonly useful for the Web. I mentioned them in a keynote at WWW7 and the note on Evolvability. This is largely "motherhood and apple pie" but it still needs a home.},
	author = {Lee, Tim  B. },
	citeulike-article-id = {1667492},
	howpublished = {http://www.w3.org/DesignIssues/Principles.html},
	keywords = {bibtex-import},
	month = {January},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	title = {Principles of Design},
	url = {http://www.w3.org/DesignIssues/Principles.html},
	year = {2002}
}



@article{baragry1998shd,
	abstract = {n recent years, software engineering researchers have elevated the study of software architecture to the level of a major area of study. A review of the published literature however, shows quite clearly that a unified view of software architecture has not been forth-coming. This paper contends that the existence of a "software architecture level of design" is based on the implicit assumption that the software development process is analogous to those "construction" disciplines in which the completed artefacts or systems exhibit a unique representational abstraction, fixed during the early stages of design, which we describe as "the architecture". We argue that our problems in obtaining an acceptable definition of software architecture are due to the assumption that software systems have an analogous, unique design abstraction, determinable at the early stages of the design. To determine the validity of this analogy, we contrast the nature and use of architecture in the traditional building process with software development to identify the differences, rather than the similarities that exist. These differences are explained using a theory of the software development process which highlights why these differences arise and, subsequently, why there has been trouble in developing a community-wide understanding of software architecture. Our conclusion is that due to the fundamental nature of the systems we construct, attempts to depict the large-scale structure of the system, in an analogous manner traditional building disciplines, results in many different architectures. These are fundamentally different representations and not merely different views of a single whole. Moreover, each of these is equally qualified to be labelled as the system architecture with respect to the general notion of what architecture is.},
	author = {Baragry, J.  and Reed, K. },
	citeulike-article-id = {1667488},
	journal = {Software Engineering Conference, 1998. Proceedings. 1998 Asia Pacific},
	keywords = {bibtex-import},
	pages = {28--36},
	pdf = {harddefine.pdf},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	title = {{Why is it so hard to define software architecture?}},
	year = {1998}
}



@article{baragry2001wnd,
	abstract = {The definition and understanding of software architectures and architecture views still shows considerable disagreement in the software engineering community. This paper argues that the problems we face exist because our understanding is based on specious analogies with traditionally engineered artefacts. A review of the history of ideas shows the evolution of this understanding. A detailed examination is then presented of the differences that exist between the nature of the systems, the content of their large-scale representations, and how they are used in practice in the respective disciplines. These differences seriously undermine the analogies used to develop our understanding and this is discussed in terms of software engineering as a whole.},
	author = {Baragry, J.  and Reed, K. },
	citeulike-article-id = {1667487},
	journal = {Software Architecture, 2001. Proceedings. Working IEEE/IFIP Conference on},
	keywords = {bibtex-import},
	pages = {125--134},
	pdf = {diffview.pdf},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	title = {{Why we need a different view of software architecture}},
	year = {2001}
}



@inproceedings{andrade05,
	author = {Andrade, Nazareno   and Costa, Lauro   and Germoglio, Guilherme   and Cirne, Walfredo  },
	booktitle = {Anais do SBRC 2005 - Sal\~{a}o de Ferramentas (23rd Brazilian Symposium on Computer Networks - IV Special Tools Session )},
	citeulike-article-id = {1667486},
	keywords = {bibtex-import},
	pdf = {salao2005.pdf},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	title = {{Peer-to-peer Grid Computing with the OurGrid Community}},
	year = {2005}
}



@article{andrade2003oae,
	author = {Andrade, N.  and Cirne, W.  and Brasileiro, F.  and Roisenberg, P. },
	citeulike-article-id = {1667485},
	journal = {Proceedings of the 9th Workshop on Job Scheduling Strategies for Parallel Processing},
	keywords = {bibtex-import},
	pages = {61--68},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	publisher = {Springer},
	title = {{OurGrid: An Approach to Easily Assemble Grids with Equitable Resource Sharing}},
	year = {2003}
}



@article{andrade2004dfr,
	author = {Andrade, N.  and Brasileiro, F.  and Cirne, W.  and Mowbray, M. },
	citeulike-article-id = {1667484},
	journal = {Proc. 13th IEEE Symposium on High Performance Distributed Computing (HPDC’04)},
	keywords = {bibtex-import},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	title = {{Discouraging Free Riding in a Peer-to-Peer CPU-Sharing Grid}},
	year = {2004}
}



@mastersthesis{Andrade04,
	abstract = {Grid computing emerged as a way of gathering an arbitrary amount of resources from different administrative domains. However, assembling a computational grid nowadays involves human negotiation with the resource owners. The need of this negotiation limits the size of the grids used in production today. There are proposals for solving this problem creating a currency-based economy, but there is no currency-based solution largely used in production currently. As an alternative to these proposals, some have proposed peer-to-peer resource sharing systems. Although this proposal doesn’t solve the general grid assembling problem, it allows building solutions of easy deployment and adoption in short term. Our- Grid is a peer-to-peer grid that targets Bag-of-Tasks applications (those parallel applications whose tasks are independent) being developed in UFCG in collaboration with HP. As in most peer-to-peer systems, free-riding is an issue that must be addressed in OurGrid. This dissertation presents the Network of Favors, an autonomous peer-to-peer reputation scheme that aims to encourage collaboration in OurGrid. Through the autonomous behavior of the peers in the system, the peers who collaborate more are prioritized when they request resources from the community. Being completely autonomous, the Network of Favors has easy implementation and deploying, allowing its use in production in OurGrid without adding significant complexity to its adoption.},
	author = {Andrade, Nazareno  },
	citeulike-article-id = {1667483},
	keywords = {bibtex-import},
	pdf = {Andrade04-dissertacao.pdf},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	school = {Universidade Federal de Campina Grande},
	title = {Reputaç\~{a}o Aut\^{o}noma como Incentivo \`{a} Colaboraç\~{a}o no Compartilhamento de Recursos Computacionais},
	year = {2004}
}



@misc{Allamaraju,
	author = {Allamaraju, Subrahmanyam  },
	citeulike-article-id = {1667482},
	howpublished = {Essays on Software Architecture},
	keywords = {bibtex-import},
	posted-at = {2007-09-18 00:33:31},
	priority = {0},
	title = {Architecture Paradox},
	url = {http://www.sei.cmu.edu/architecture/essays.html\#paradox}
}

@misc{citeulike:2818061,
	author = {Booch, Grady  },
	citeulike-article-id = {2818061},
	howpublished = {Handbook of Software Architecture - Blog. Online at http://www.booch.com/architecture/blog.jsp?archive=2006-03.html},
	keywords = {design},
	month = {March},
	posted-at = {2008-05-21 03:25:29},
	priority = {0},
	title = {On Design},
	year = {2006}
}

